@@ -0,0 +1,2 @@ | |||
connection.project.dir= | |||
eclipse.preferences.version=1 |
@@ -56,9 +56,9 @@ android { | |||
// manifestPlaceholders = [ | |||
// AMAP_KEY : "1fd4e93e3b4b13747da41f484c955fe2", /// 高德地图key | |||
// ] | |||
ndk { | |||
abiFilters 'armeabi-v7a' | |||
} | |||
// ndk { | |||
// abiFilters 'armeabi-v7a' | |||
// } | |||
multiDexEnabled true | |||
manifestPlaceholders = [ | |||
JPUSH_PKGNAME : 'com.cyhd.henhoandroid', | |||
@@ -36,8 +36,6 @@ import 'ChatPageItem.dart'; | |||
import 'input_bar.dart'; | |||
import 'package:chat/utils/PopUpMenu.dart' as myPop; | |||
import 'package:chat/models/money_change.dart'; | |||
class ChatPage extends StatefulWidget { | |||
final int friendId; | |||
final int enterType; // 0默认 1图片 | |||
@@ -197,14 +195,22 @@ class _ChatPageState extends State<ChatPage> { | |||
if (widget.enterType == 1) { | |||
print('接收到的:${widget.enterContent}'); | |||
File file = new File(widget.enterContent); | |||
if(file.existsSync()){ | |||
print('接收到的文件--存在'); | |||
}else{ | |||
print('接收到的文件--不存在'); | |||
_sendFile(File(widget.enterContent)); | |||
} else if (widget.enterType == 2) { | |||
//转发消息 | |||
MsgModel originMsg = widget.enterContent; | |||
MsgModel msg = MsgHandler.createSendMsg( | |||
ChatType.valueOf(originMsg.msgType), originMsg.msgContent); | |||
msg.extraInfo = originMsg.extraInfo; | |||
msg.extraFile = originMsg.extraFile; | |||
msg.localFile = originMsg.localFile; | |||
msg.friendId = widget.friendId; | |||
if (msg.localFile != null) { | |||
msg.state = MsgState.Uploaded; | |||
} | |||
_sendFile(File(widget.enterContent)); | |||
sendMsg(msg); | |||
} | |||
}); | |||
} | |||
@@ -614,6 +614,7 @@ class _ChatPageItemState extends State<ChatPageItem> | |||
List<String> actions = [ | |||
I18n.of(context).delete, | |||
I18n.of(context).reply, | |||
'转发' | |||
]; | |||
actionsFunc.add(() { | |||
@@ -623,6 +624,11 @@ class _ChatPageItemState extends State<ChatPageItem> | |||
print('发送引用的消息'); | |||
MessageMgr().emit('Reply Select Message', widget.msg); | |||
}); | |||
actionsFunc.add(() { | |||
print('转发消息'); | |||
AppNavigator.pushForwardPage(context, widget.msg); | |||
}); | |||
if (widget.msg.msgType == ChatType.TextChatType.value) { | |||
actions.insert(0, I18n.of(context).copy); | |||
@@ -1,5 +1,5 @@ | |||
import 'package:chat/generated/i18n.dart'; | |||
import 'package:chat/utils/LoadingDialog.dart'; | |||
import 'package:chat/data/constants.dart'; | |||
import 'package:extended_text_library/extended_text_library.dart'; | |||
import 'package:flutter/material.dart'; | |||
@@ -28,7 +28,7 @@ class EmojiGifText extends SpecialText { | |||
imageHeight: size, | |||
start: start, | |||
fit: BoxFit.fill, | |||
margin: EdgeInsets.only(left: 2.0, top: 2.0, right: 2.0)):SpecialTextSpan(text:'[${I18n.of(LoadingManage.context).emoji}]', actualText: '' ); | |||
margin: EdgeInsets.only(left: 2.0, top: 2.0, right: 2.0)):SpecialTextSpan(text:'[${I18n.of(Constants.getCurrentContext()).emoji}]', actualText: '' ); | |||
// return Image.asset(EmojiGifUitl.instance.emojiMap[key]); | |||
@@ -1,14 +1,14 @@ | |||
import 'dart:io'; | |||
import 'dart:typed_data'; | |||
import 'package:chat/chat/download_item.dart'; | |||
import 'package:chat/generated/i18n.dart'; | |||
import 'package:chat/models/ChatMsg.dart'; | |||
import 'package:chat/utils/screen.dart'; | |||
import 'package:extended_image/extended_image.dart'; | |||
import 'package:flutter/material.dart'; | |||
import 'package:image_gallery_saver/image_gallery_saver.dart'; | |||
import 'package:oktoast/oktoast.dart'; | |||
import '../r.dart'; | |||
class PhotoPage extends StatefulWidget { | |||
final MsgModel msg; | |||
@@ -20,12 +20,6 @@ class PhotoPage extends StatefulWidget { | |||
class _PhotoPageState extends State<PhotoPage> | |||
with SingleTickerProviderStateMixin { | |||
AnimationController _controller; | |||
Animation<Offset> _animation; | |||
Offset _offset = Offset.zero; | |||
double _scale = 1.0; | |||
Offset _normalizedOffset; | |||
double _previousScale; | |||
double _kMinFlingVelocity = 600.0; | |||
ImageProvider provider; | |||
@@ -37,7 +31,6 @@ class _PhotoPageState extends State<PhotoPage> | |||
_controller = AnimationController(vsync: this); | |||
_controller.addListener(() { | |||
setState(() { | |||
_offset = _animation.value; | |||
}); | |||
}); | |||
} | |||
@@ -59,75 +52,50 @@ class _PhotoPageState extends State<PhotoPage> | |||
super.dispose(); | |||
} | |||
Offset _clampOffset(Offset offset) { | |||
final Size size = context.size; | |||
// widget的屏幕宽度 | |||
final Offset minOffset = Offset(size.width, size.height) * (1.0 - _scale); | |||
// 限制他的最小尺寸 | |||
return Offset( | |||
offset.dx.clamp(minOffset.dx, 0.0), offset.dy.clamp(minOffset.dy, 0.0)); | |||
} | |||
void _handleOnScaleStart(ScaleStartDetails details) { | |||
setState(() { | |||
_previousScale = _scale; | |||
_normalizedOffset = (details.focalPoint - _offset) / _scale; | |||
// 计算图片放大后的位置 | |||
_controller.stop(); | |||
}); | |||
} | |||
void _handleOnScaleUpdate(ScaleUpdateDetails details) { | |||
setState(() { | |||
_scale = (_previousScale * details.scale).clamp(1.0, 3.0); | |||
// 限制放大倍数 1~3倍 | |||
_offset = _clampOffset(details.focalPoint - _normalizedOffset * _scale); | |||
// 更新当前位置 | |||
}); | |||
} | |||
void _handleOnScaleEnd(ScaleEndDetails details) { | |||
final double magnitude = details.velocity.pixelsPerSecond.distance; | |||
if (magnitude < _kMinFlingVelocity) return; | |||
final Offset direction = details.velocity.pixelsPerSecond / magnitude; | |||
// 计算当前的方向 | |||
final double distance = (Offset.zero & context.size).shortestSide; | |||
// 计算放大倍速,并相应的放大宽和高,比如原来是600*480的图片,放大后倍数为1.25倍时,宽和高是同时变化的 | |||
_animation = _controller.drive(Tween<Offset>( | |||
begin: _offset, end: _clampOffset(_offset + direction * distance))); | |||
_controller | |||
..value = 0.0 | |||
..fling(velocity: magnitude / 1000.0); | |||
} | |||
@override | |||
Widget build(BuildContext context) { | |||
Uint8List fileData; | |||
if (widget.msg.localFile != null) { | |||
fileData = File(widget.msg.localFile).readAsBytesSync(); | |||
} else { | |||
fileData = Uint8List.fromList(widget.msg.msgContent); | |||
} | |||
return GestureDetector( | |||
onTap: () { | |||
Navigator.pop(context); | |||
}, | |||
onScaleStart: _handleOnScaleStart, | |||
onScaleUpdate: _handleOnScaleUpdate, | |||
onScaleEnd: _handleOnScaleEnd, | |||
child: Material( | |||
child: DownloadItem( | |||
msg: widget.msg, | |||
isAutoDown: false, | |||
onComplete: () { | |||
getImgData(); | |||
setState(() {}); | |||
onTap: () { | |||
Navigator.pop(context); | |||
}, | |||
child: Transform( | |||
transform: Matrix4.identity() | |||
..translate(_offset.dx, _offset.dy) | |||
..scale(_scale), | |||
child: Container( | |||
width: Screen.width, | |||
height: Screen.height, | |||
alignment: Alignment.center, | |||
child: Stack( | |||
children: <Widget>[ | |||
Image( | |||
fit: BoxFit.fitWidth, | |||
image: provider ?? AssetImage(R.assetsImagesIcAlbum), | |||
), | |||
SingleChildScrollView( | |||
child: Column( | |||
children: <Widget>[ | |||
Container( | |||
width: Screen.width, | |||
constraints: BoxConstraints(minHeight: Screen.height), | |||
child: ExtendedImage.memory( | |||
fileData, | |||
fit: BoxFit.fitWidth, | |||
mode: ExtendedImageMode.gesture, | |||
initGestureConfigHandler: (state) { | |||
return GestureConfig( | |||
minScale: 0.9, | |||
animationMinScale: 0.7, | |||
maxScale: 3.0, | |||
animationMaxScale: 3.5, | |||
speed: 1.0, | |||
inertialSpeed: 100.0, | |||
initialScale: 1.0, | |||
inPageView: true, | |||
initialAlignment: InitialAlignment.center, | |||
); | |||
}, | |||
)) | |||
], | |||
)), | |||
Positioned( | |||
right: 10, | |||
bottom: 10, | |||
@@ -141,14 +109,12 @@ class _PhotoPageState extends State<PhotoPage> | |||
child: Icon(Icons.save_alt, color: Colors.white70), | |||
))) | |||
], | |||
)), | |||
)), | |||
); | |||
))); | |||
} | |||
saveToGallery() async { | |||
if (widget.msg.localFile != null) { | |||
var data= File(widget.msg.localFile).readAsBytesSync(); | |||
var data = File(widget.msg.localFile).readAsBytesSync(); | |||
ImageGallerySaver.saveImage(data).then((res) { | |||
print(res); | |||
if (res != null) { | |||
@@ -106,6 +106,19 @@ class _GroupChatPageState extends State<GroupChatPage> { | |||
if (widget.enterType == 1) { | |||
print('接收到的:${widget.enterContent}'); | |||
_sendFile(File(widget.enterContent)); | |||
} else if (widget.enterType == 2) { | |||
//转发消息 | |||
MsgModel originMsg = widget.enterContent; | |||
MsgModel msg = MsgHandler.createSendMsg( | |||
ChatType.valueOf(originMsg.msgType), originMsg.msgContent,channelType: ChatChannelType.Group); | |||
msg.extraInfo = originMsg.extraInfo; | |||
msg.extraFile = originMsg.extraFile; | |||
msg.localFile = originMsg.localFile; | |||
if (msg.localFile != null) { | |||
msg.state = MsgState.Uploaded; | |||
} | |||
sendMsg(msg); | |||
} | |||
}); | |||
} | |||
@@ -13,7 +13,7 @@ import 'package:chat/proto/all.pbserver.dart'; | |||
import 'package:chat/utils/ChargeMoney.dart'; | |||
import 'package:chat/utils/CustomUI.dart'; | |||
import 'package:chat/utils/HttpUtil.dart'; | |||
import 'package:chat/utils/LoadingDialog.dart'; | |||
import 'package:chat/data/constants.dart'; | |||
import 'package:chat/utils/app_navigator.dart'; | |||
import 'package:chat/utils/blacklist_mgr.dart'; | |||
import 'package:chat/utils/image_util.dart'; | |||
@@ -33,13 +33,18 @@ import 'package:file_picker/file_picker.dart'; | |||
import '../r.dart'; | |||
class UtilKeyboard extends StatelessWidget { | |||
class UtilKeyboard extends StatefulWidget { | |||
final double keyboardHeight; | |||
final Function sendMsg; | |||
final bool isGroup; | |||
UtilKeyboard({this.keyboardHeight, this.sendMsg, this.isGroup}); | |||
bool isAuthority = false; | |||
@override | |||
_UtilKeyboardState createState() => _UtilKeyboardState(); | |||
} | |||
class _UtilKeyboardState extends State<UtilKeyboard> { | |||
bool isAuthority = false; | |||
@override | |||
Widget build(BuildContext context) { | |||
@@ -58,7 +63,7 @@ class UtilKeyboard extends StatelessWidget { | |||
_sendVideo(context); | |||
})); | |||
if (!isGroup) { | |||
if (!widget.isGroup) { | |||
iconList.add( | |||
_buildOtherSelect(R.assetsImagesChatItem3, I18n.of(context).chat, () { | |||
_audioChat(context); | |||
@@ -70,7 +75,7 @@ class UtilKeyboard extends StatelessWidget { | |||
_openMap(context); | |||
})); | |||
if (!isGroup) { | |||
if (!widget.isGroup) { | |||
iconList.add(Offstage( | |||
offstage: !isShowRedPacket, | |||
child: _buildOtherSelect( | |||
@@ -91,7 +96,7 @@ class UtilKeyboard extends StatelessWidget { | |||
return Container( | |||
width: Screen.width, | |||
color: Colors.white, | |||
height: keyboardHeight, | |||
height: widget.keyboardHeight, | |||
padding: EdgeInsets.only(top: 20, bottom: 10, left: 20), | |||
alignment: Alignment.topLeft, | |||
child: Wrap(spacing: 10.0, runSpacing: 20.0, children: iconList)); | |||
@@ -99,7 +104,7 @@ class UtilKeyboard extends StatelessWidget { | |||
_showGiftSheet(BuildContext context) { | |||
int friendId = 0; | |||
if (!isGroup) { | |||
if (!widget.isGroup) { | |||
friendId = Provider.of<int>(context); | |||
} | |||
@@ -113,7 +118,7 @@ class UtilKeyboard extends StatelessWidget { | |||
builder: (BuildContext context) { | |||
return StatefulBuilder( | |||
builder: (BuildContext context, setBottomSheetState) { | |||
return GiftSelectWidget(friendId, sendMsg); | |||
return GiftSelectWidget(friendId, widget.sendMsg); | |||
}, | |||
); | |||
}); | |||
@@ -135,16 +140,16 @@ class UtilKeyboard extends StatelessWidget { | |||
var reslutStr = jsonEncode(result); | |||
int friendId = 0; | |||
if (!isGroup) { | |||
if (!widget.isGroup) { | |||
friendId = Provider.of<int>(context); | |||
} | |||
var msg = MsgHandler.createSendMsg( | |||
ChatType.PlaceChatType, utf8.encode(reslutStr), | |||
friendId: friendId, | |||
channelType: | |||
isGroup ? ChatChannelType.Group : ChatChannelType.Session); | |||
widget.isGroup ? ChatChannelType.Group : ChatChannelType.Session); | |||
sendMsg(msg); | |||
widget.sendMsg(msg); | |||
} | |||
} | |||
@@ -163,8 +168,7 @@ class UtilKeyboard extends StatelessWidget { | |||
showToast(I18n.of(context).cantt_voice); | |||
return; | |||
} | |||
if (BlacklistMgr.isBlaklistMe(info.userId)) { | |||
if (BlacklistMgr.isBlaklistMe(info.userId)) { | |||
showToast(I18n.of(context).you_are_blaklisted); | |||
return; | |||
} | |||
@@ -285,7 +289,7 @@ class UtilKeyboard extends StatelessWidget { | |||
int aspectRatio = rect.width * 100 ~/ rect.height; | |||
int friendId = 0; | |||
if (!isGroup) { | |||
if (!widget.isGroup) { | |||
friendId = Provider.of<int>(context); | |||
} | |||
var msg = MsgHandler.createSendMsg(ChatType.ImageChatType, sendImg, | |||
@@ -293,9 +297,9 @@ class UtilKeyboard extends StatelessWidget { | |||
friendId: friendId, | |||
localFile: isNeedUpload ? imgFile.absolute.path : null, | |||
channelType: | |||
isGroup ? ChatChannelType.Group : ChatChannelType.Session); | |||
widget.isGroup ? ChatChannelType.Group : ChatChannelType.Session); | |||
sendMsg(msg); | |||
widget.sendMsg(msg); | |||
} | |||
} | |||
@@ -304,38 +308,39 @@ class UtilKeyboard extends StatelessWidget { | |||
int fileSize = file.lengthSync(); | |||
print('选择的文件 ${file.path} 大小 $fileSize'); | |||
if (fileSize > 33 * 1024 * 1024) { | |||
showToast('文件大于33M'); | |||
return; | |||
} | |||
if (fileSize > 33 * 1024 * 1024) { | |||
showToast('文件大于33M'); | |||
return; | |||
} | |||
int friendId = 0; | |||
if (!isGroup) { | |||
friendId = Provider.of<int>(context); | |||
} | |||
int friendId = 0; | |||
if (!widget.isGroup) { | |||
friendId = Provider.of<int>(context); | |||
} | |||
var fileName = file.path.split('/').last; | |||
print('fileName $fileName'); | |||
var fileName = file.path.split('/').last; | |||
print('fileName $fileName'); | |||
var ext = ''; | |||
var extList = fileName.split('.'); | |||
if (extList.length > 1) { | |||
ext = extList.last; | |||
} | |||
print('ext $ext'); | |||
var ext = ''; | |||
var extList = fileName.split('.'); | |||
if (extList.length > 1) { | |||
ext = extList.last; | |||
} | |||
print('ext $ext'); | |||
var fileMsg = FileChat.create(); | |||
fileMsg.type = ext; | |||
fileMsg.size = fileSize; | |||
fileMsg.name = fileName; | |||
var fileMsg = FileChat.create(); | |||
fileMsg.type = ext; | |||
fileMsg.size = fileSize; | |||
fileMsg.name = fileName; | |||
var msg = MsgHandler.createSendMsg(ChatType.FileChatType, fileMsg.writeToBuffer(), | |||
friendId: friendId, | |||
localFile: file.path, | |||
channelType: | |||
widget.isGroup ? ChatChannelType.Group : ChatChannelType.Session); | |||
var msg = MsgHandler.createSendMsg( | |||
ChatType.FileChatType, fileMsg.writeToBuffer(), | |||
friendId: friendId, | |||
localFile: file.path, | |||
channelType: isGroup ? ChatChannelType.Group : ChatChannelType.Session); | |||
widget.sendMsg(msg); | |||
sendMsg(msg); | |||
} | |||
void _sendVideo(BuildContext context) async { | |||
@@ -349,7 +354,7 @@ class UtilKeyboard extends StatelessWidget { | |||
print('视频大小:$videoSize'); | |||
if (videoSize > 33 * 1024 * 1024) { | |||
showToast(I18n.of(LoadingManage.context).video_more_big); | |||
showToast(I18n.of(Constants.getCurrentContext()).video_more_big); | |||
return; | |||
} | |||
@@ -361,7 +366,7 @@ class UtilKeyboard extends StatelessWidget { | |||
int aspectRatio = rect.width * 100 ~/ rect.height; | |||
int friendId = 0; | |||
if (!isGroup) { | |||
if (!widget.isGroup) { | |||
friendId = Provider.of<int>(context); | |||
} | |||
var msg = MsgHandler.createSendMsg(ChatType.ShortVideoChatType, thumbnail, | |||
@@ -369,9 +374,9 @@ class UtilKeyboard extends StatelessWidget { | |||
friendId: friendId, | |||
localFile: video.path, | |||
channelType: | |||
isGroup ? ChatChannelType.Group : ChatChannelType.Session); | |||
widget.isGroup ? ChatChannelType.Group : ChatChannelType.Session); | |||
sendMsg(msg); | |||
widget.sendMsg(msg); | |||
} | |||
} | |||
@@ -219,7 +219,6 @@ class UserData { | |||
await prefs.setDouble(Constants.Longitude, UserData().longitude); | |||
HttpUtil().getAddress(loc.longitude, loc.latitude); | |||
//HttpUtil().getAddress(106.600798525456, 10.7517368433358); | |||
//HttpUtil().getAddress(113.8669580078125, 22.568465711805555); | |||
if (callback != null) callback(loc); | |||
} | |||
} | |||
@@ -109,6 +109,16 @@ class Constants { | |||
///ture 应用商店版本 false线下渠道 | |||
static const bool isStoreVersion = false; | |||
//app全局key,处理content | |||
static final GlobalKey<NavigatorState> navigatorKey = GlobalKey(); | |||
/// 获取当前的state | |||
static NavigatorState getCurrentState() => navigatorKey.currentState; | |||
/// 获取当前的context | |||
static BuildContext getCurrentContext() => navigatorKey.currentContext; | |||
///在pubspec.yaml中修改版本号 | |||
static String versionName = '1.0.0'; | |||
@@ -868,7 +868,8 @@ class _AddProgramState extends State<AddProgram> { | |||
contentPadding: | |||
EdgeInsets.only(top: 6, bottom: 10, right: 10), | |||
hintText: I18n.of(context).please_civilization, | |||
hintStyle: TextStyle(fontSize: 12, height: 1.15), | |||
hintStyle: | |||
TextStyle(fontSize: 12, height: 1.15), | |||
border: InputBorder.none, | |||
), | |||
style: TextStyle( | |||
@@ -1157,7 +1158,7 @@ class _AddProgramState extends State<AddProgram> { | |||
.replaceFirst('/s1', UserData().addProgramPrice.toString()); | |||
} | |||
return Container( | |||
padding: EdgeInsets.only(bottom: 100, left: 20, right: 20), | |||
padding: EdgeInsets.only(bottom: 100, left: 20, right: 20), | |||
child: Text( | |||
str, | |||
textScaleFactor: 1.0, | |||
@@ -1311,8 +1312,8 @@ class _AddProgramState extends State<AddProgram> { | |||
var hopeObject = ''; | |||
lovePeopleId.forEach((f) => hopeObject += hopeObject == '' ? f : ',$f'); | |||
String temp = ''; | |||
String postTemp = ''; | |||
String temp=''; | |||
String postTemp=''; | |||
imgUrlList.forEach((str) { | |||
temp += (temp == "" ? str : '|$str'); | |||
postTemp += (postTemp == "" | |||
@@ -691,6 +691,8 @@ class _DisCoverPageState extends State<DisCoverPage> | |||
Widget _renderRow(int index, list, page) { | |||
if (index < list.length) { | |||
var userInfo = list[index]; | |||
print('----------------------------------------------------'); | |||
print(userInfo); | |||
return UserCard( | |||
key: UniqueKey(), | |||
userName: Provider.of<RefNameProvider>(context) | |||
@@ -742,8 +742,7 @@ class _EditPageState extends State<EditPage> { | |||
widget.isEditPage ? idItem : Container(), | |||
_buildDivider(), | |||
_bottomBorderBox(I18n.of(context).nickname, I18n.of(context).fill_out, | |||
true, nickNameController, true, (str) => nickname = str, | |||
inputFormatters: [LengthLimitingTextInputFormatter(20)]), | |||
true, nickNameController, true, (str) => nickname = str), | |||
_buildDivider(), | |||
_bottomBorderBox(I18n.of(context).country, country, false, null, | |||
countryId.length != 0, selectCountry), | |||
@@ -1,6 +1,5 @@ | |||
import 'package:chat/data/UserData.dart'; | |||
import 'package:chat/generated/i18n.dart'; | |||
import 'package:chat/utils/LoadingDialog.dart'; | |||
import 'package:chat/utils/screen.dart'; | |||
import 'package:connectivity/connectivity.dart'; | |||
import 'package:flutter/cupertino.dart'; | |||
@@ -153,7 +152,7 @@ class _IndexPageState extends State<IndexPage> { | |||
return; | |||
} | |||
if (resData['data'] != null) { | |||
HttpUtil().changePage(LoadingManage.context, resData); | |||
HttpUtil().changePage(Constants.getCurrentContext(), resData); | |||
} | |||
} | |||
@@ -3,7 +3,6 @@ import 'package:chat/data/WebData.dart'; | |||
import 'package:chat/generated/i18n.dart'; | |||
import 'package:chat/home/ProfilePage.dart'; | |||
import 'package:chat/home/rich_title.dart'; | |||
import 'package:chat/models/ref_name_provider.dart'; | |||
import 'package:chat/utils/CustomUI.dart'; | |||
import 'package:chat/utils/HttpUtil.dart'; | |||
import 'package:chat/utils/MessageMgr.dart'; | |||
@@ -16,9 +15,7 @@ import 'package:dio/dio.dart'; | |||
import 'package:flutter/cupertino.dart'; | |||
import 'package:flutter/material.dart'; | |||
import 'package:flutter/services.dart'; | |||
import 'package:oktoast/oktoast.dart'; | |||
import 'package:provider/provider.dart'; | |||
import 'package:pull_to_refresh/pull_to_refresh.dart'; | |||
import 'package:url_launcher/url_launcher.dart'; | |||
import '../data/constants.dart' show AppColors, Constants; | |||
@@ -27,6 +24,7 @@ import 'package:cached_network_image/cached_network_image.dart'; | |||
import 'ProgramDetail.dart'; | |||
class _ConversationItem extends StatelessWidget { | |||
const _ConversationItem( | |||
{Key key, | |||
@@ -352,8 +350,6 @@ class _ConversationItem extends StatelessWidget { | |||
} | |||
} | |||
class InfoListPage extends StatefulWidget { | |||
@required | |||
final String title; | |||
@@ -27,7 +27,7 @@ enum reason { | |||
liar, | |||
} | |||
int Max_Img_Num = 4; | |||
const int MaxImgNum = 4; | |||
class InformUserPage extends StatefulWidget { | |||
@required | |||
@@ -182,7 +182,7 @@ class _InformUserPageState extends State<InformUserPage> { | |||
var photos = await PhotoPicker.pickAsset( | |||
context: context, | |||
themeColor: Color(0xFFF0F0F0), | |||
maxSelected: Max_Img_Num - imgUrlList.length, | |||
maxSelected: MaxImgNum - imgUrlList.length, | |||
textColor: Color(0xFF3F3F3F), | |||
pickType: PickType.onlyImage); | |||
@@ -346,7 +346,7 @@ class _InformUserPageState extends State<InformUserPage> { | |||
List<Widget> list = imgUrlList.map((f) { | |||
return _buildImg(f); | |||
}).toList(); | |||
if (list.length < Max_Img_Num) { | |||
if (list.length < MaxImgNum) { | |||
list.add(upButton); | |||
} | |||
var socialCard = new Container( | |||
@@ -8,7 +8,6 @@ import 'package:chat/data/constants.dart'; | |||
import 'package:chat/data/conversation.dart'; | |||
import 'package:chat/generated/i18n.dart'; | |||
import 'package:chat/home/BindBank.dart'; | |||
import 'package:chat/home/InfoList.dart'; | |||
import 'package:chat/home/ProfilePage.dart'; | |||
import 'package:chat/home/rich_title.dart'; | |||
import 'package:chat/models/money_change.dart'; | |||
@@ -171,7 +171,8 @@ class _MyProgramPageState extends State<MyProgramPage> { | |||
), | |||
centerTitle: true, | |||
leading: CustomUI.buildCustomLeading(context), | |||
elevation: 1, | |||
elevation: 1, | |||
actions: <Widget>[ | |||
isMyself | |||
? myPop.PopupMenuButton<String>( | |||
@@ -1,6 +1,5 @@ | |||
import 'dart:convert'; | |||
import 'dart:io'; | |||
import 'package:chat/home/InfoList.dart'; | |||
import 'package:chat/home/fans_page.dart'; | |||
import 'package:chat/home/goddess_hot.dart'; | |||
import 'package:chat/home/rich_title.dart'; | |||
@@ -260,50 +259,6 @@ class _ProfilePageState extends State<ProfilePage> | |||
myMsg = userInfo.ownMsg; | |||
} | |||
// getFirstDy() async { | |||
// var data = { | |||
// "userId": UserData().basicInfo.userId, | |||
// "visitUserId": widget.userId, | |||
// "type": 2, | |||
// }; | |||
// data['sign'] = TokenMgr().getSign(data); | |||
// data['page'] = 1; | |||
// data['rows'] = 1; | |||
// Response res = await HttpUtil().post('station/gain/program', data: data); | |||
// var resData = res.data; | |||
// if (resData['code'] == 0 && resData['data'] != null) { | |||
// var imgUrl = resData['data'][0]['ImgUrl']; | |||
// if (imgUrl != '') { | |||
// firstDyImg = imgUrl.split('|')[0]; | |||
// if (mounted) { | |||
// setState(() {}); | |||
// } | |||
// } | |||
// } | |||
// } | |||
// getFirstProgram() async { | |||
// var data = { | |||
// "userId": UserData().basicInfo.userId, | |||
// "visitUserId": widget.userId, | |||
// //"type": 1, | |||
// }; | |||
// data['sign'] = TokenMgr().getSign(data); | |||
// data['page'] = 1; | |||
// data['rows'] = 1; | |||
// Response res = await HttpUtil().post('station/gain/program', data: data); | |||
// var resData = res.data; | |||
// if (resData['code'] == 0 && | |||
// resData['data'] != null && | |||
// resData['data'][0]['Status'] == 0) { | |||
// if (mounted) { | |||
// setState(() { | |||
// programId = resData['data'][0]['Id']; | |||
// }); | |||
// } | |||
// } | |||
// } | |||
@override | |||
void initState() { | |||
super.initState(); | |||
@@ -314,21 +269,6 @@ class _ProfilePageState extends State<ProfilePage> | |||
messageOn(); | |||
initLocalData(); | |||
getUserInfo(); | |||
initAnimation(); | |||
} | |||
initAnimation() { | |||
// animationController = AnimationController( | |||
// duration: Duration(milliseconds: 600), | |||
// vsync: this, | |||
// ); | |||
// movement = | |||
// Tween(begin: EdgeInsets.only(right: 0), end: EdgeInsets.only(right: 10)) | |||
// .animate(animationController) | |||
// ..addListener(() { | |||
// setState(() {}); | |||
// }); | |||
// animationController.repeat(); | |||
} | |||
void initMyController() {} | |||
@@ -449,6 +389,9 @@ class _ProfilePageState extends State<ProfilePage> | |||
data['sign'] = TokenMgr().getSign(data); | |||
Response res = await HttpUtil().post('user/personal/album', data: data); | |||
if (res == null) { | |||
return; | |||
} | |||
Map resData = res.data; | |||
if (resData['code'] == 0) { | |||
imgList = resData['data'] == null ? [] : resData['data']; | |||
@@ -1147,8 +1090,9 @@ class _ProfilePageState extends State<ProfilePage> | |||
top: 20, | |||
child: InkWell( | |||
onTap: () async { | |||
if (!userInfo.isLike) { | |||
HttpUtil().setLove(userInfo.userId, () { | |||
HttpUtil().setLove(userInfo.userId, () { | |||
MessageMgr().emit('refresh_love_list', | |||
{'UserId': userInfo.userId, 'flag': 0}); | |||
setState(() { | |||
@@ -1426,7 +1370,6 @@ class _ProfilePageState extends State<ProfilePage> | |||
context, I18n.of(context).blacklist_choose, I18n.of(context).determine, | |||
() async { | |||
Navigator.pop(context); | |||
HttpUtil().blackUser(userInfo.userId, () { | |||
isblack = true; | |||
}); | |||
@@ -2147,25 +2090,15 @@ class _ProfilePageState extends State<ProfilePage> | |||
description: I18n.of(context).recovery_photo, | |||
showDivider: false, | |||
showRightIcon: false, | |||
onPressed: () async { | |||
CustomUI.buildOneConfirm( | |||
onPressed: () async {CustomUI.buildOneConfirm( | |||
context, | |||
I18n.of(context).confrim_recovery, | |||
I18n.of(context).determine, () async { | |||
Map data = { | |||
"userId": UserData().basicInfo.userId, | |||
}; | |||
data['sign'] = TokenMgr().getSign(data); | |||
Response res = await HttpUtil().post('user/recover/photos', | |||
data: data, isShowLoading: true); | |||
Map resData = res.data; | |||
if (resData['code'] == 0) { | |||
showToast(resData['msg']); | |||
HttpUtil().resetPhoto(() { | |||
Navigator.of(context).pop(); | |||
userInfo.burnNum = 0; | |||
setState(() {}); | |||
} | |||
}); | |||
}); | |||
}, | |||
), | |||
@@ -2176,51 +2109,6 @@ class _ProfilePageState extends State<ProfilePage> | |||
: Container(); | |||
} | |||
// Widget _buildApplyCode() { | |||
// //帮朋友申请邀请码 | |||
// return isMan | |||
// ? Container( | |||
// margin: EdgeInsets.only(top: Separate_Size), | |||
// padding: EdgeInsets.symmetric(horizontal: 10), | |||
// child: FullWidthButton( | |||
// title: I18n.of(context).apply_code, | |||
// showDivider: false, | |||
// showRightIcon: false, | |||
// onPressed: () { | |||
// CustomUI.buildOneConfirm(context, I18n.of(context).issue_choose, | |||
// I18n.of(context).determine, () async { | |||
// Map data = { | |||
// "userId": UserData().basicInfo.userId, | |||
// }; | |||
// data['sign'] = TokenMgr().getSign(data); | |||
// Response res = | |||
// await HttpUtil().post('user/helper/apply', data: data); | |||
// Map resData = res.data; | |||
// if (resData['code'] == 0) { | |||
// Navigator.of(context).pop(); | |||
// CustomUI.buildOneConfirm( | |||
// context, | |||
// I18n.of(context).receive_incode, | |||
// I18n.of(context).ok, () { | |||
// Navigator.of(context).pop(); | |||
// }); | |||
// } else { | |||
// showToast(resData['msg']); | |||
// } | |||
// }); | |||
// }, | |||
// ), | |||
// decoration: BoxDecoration( | |||
// color: Colors.white, | |||
// border: Border( | |||
// top: Constants.GreyBorderSide, | |||
// bottom: Constants.GreyBorderSide)), | |||
// ) | |||
// : Container(); | |||
// } | |||
Widget _buildShare() { | |||
//分享 | |||
return Container( | |||
@@ -2277,8 +2165,6 @@ class _ProfilePageState extends State<ProfilePage> | |||
Size screenSize = MediaQuery.of(context).size; | |||
cardWidth = screenSize.width; | |||
Widget appBar = AppBar( | |||
// backgroundColor: AppColors.NewAppbarBgColor, | |||
//automaticallyImplyLeading: !isMyself, | |||
leading: isMyself ? Container() : CustomUI.buildCustomLeading(context), | |||
titleSpacing: isMyself ? -40 : NavigationToolbar.kMiddleSpacing, | |||
title: isMyself | |||
@@ -2434,7 +2320,7 @@ class _ProfilePageState extends State<ProfilePage> | |||
), | |||
onTap: isblack | |||
? () async { | |||
HttpUtil().cancleBlackUser( | |||
HttpUtil().cancleBlackUser( | |||
userInfo.userId, () { | |||
Navigator.of(context).pop(); | |||
isblack = false; | |||
@@ -2572,66 +2458,55 @@ class _ProfilePageState extends State<ProfilePage> | |||
), | |||
], | |||
); | |||
var bottomWidget = Container( | |||
height: 55, | |||
decoration: BoxDecoration( | |||
border: Border(top: BorderSide(color: Color(0xffeaeaea))), | |||
color: Constants.LightGreyBackgroundColor, | |||
), | |||
child: Row( | |||
mainAxisAlignment: MainAxisAlignment.spaceEvenly, | |||
children: widget.addMode == 1 | |||
? <Widget>[_inviteFdBtn()] | |||
: (widget.addMode == 2 | |||
? [_dealInvite()] | |||
: <Widget>[ | |||
_buildIcon(0xe633, I18n.of(context).evaluate, true, | |||
() async { | |||
Map data = { | |||
"userid": userInfo.userId, | |||
'evaluateuserid': UserData().basicInfo.userId, | |||
}; | |||
data['sign'] = TokenMgr().getSign(data); | |||
Response res = await HttpUtil().post('evaluate/user/info', | |||
data: data, isShowLoading: true); | |||
Map resData = res.data; | |||
print(resData); | |||
if (resData['code'] == 0) { | |||
Navigator.of(context).push(TutorialOverlay( | |||
child: ApplyContent( | |||
userId: userInfo.userId, | |||
isMan: isMan, | |||
userInfo: resData['data']))); | |||
} else { | |||
showToast(resData['msg']); | |||
} | |||
}), | |||
_buildIcon(0xe637, I18n.of(context).private_chat, | |||
isCanWatch, isCanWatch ? buyChatAccount : null, | |||
iconSize: 24.0), | |||
_buildIcon( | |||
0xe62f, I18n.of(context).chat, isCanWatch, onAudio) | |||
]), | |||
), | |||
); | |||
Widget content = Container( | |||
color: Colors.white, | |||
child: SafeArea( | |||
child: Scaffold( | |||
bottomNavigationBar: !isMyself | |||
? Container( | |||
height: 55, | |||
decoration: BoxDecoration( | |||
border: | |||
Border(top: BorderSide(color: Color(0xffeaeaea))), | |||
color: Constants.LightGreyBackgroundColor, | |||
), | |||
child: Row( | |||
mainAxisAlignment: MainAxisAlignment.spaceEvenly, | |||
children: widget.addMode == 1 | |||
? <Widget>[_inviteFdBtn()] | |||
: (widget.addMode == 2 | |||
? [_dealInvite()] | |||
: <Widget>[ | |||
_buildIcon( | |||
0xe633, I18n.of(context).evaluate, true, | |||
() async { | |||
Map data = { | |||
"userid": userInfo.userId, | |||
'evaluateuserid': | |||
UserData().basicInfo.userId, | |||
}; | |||
data['sign'] = TokenMgr().getSign(data); | |||
Response res = await HttpUtil().post( | |||
'evaluate/user/info', | |||
data: data, | |||
isShowLoading: true); | |||
Map resData = res.data; | |||
print(resData); | |||
if (resData['code'] == 0) { | |||
Navigator.of(context).push( | |||
TutorialOverlay( | |||
child: ApplyContent( | |||
userId: userInfo.userId, | |||
isMan: isMan, | |||
userInfo: | |||
resData['data']))); | |||
} else { | |||
showToast(resData['msg']); | |||
} | |||
}), | |||
_buildIcon( | |||
0xe637, | |||
I18n.of(context).private_chat, | |||
isCanWatch, | |||
isCanWatch ? buyChatAccount : null, | |||
iconSize: 24.0), | |||
_buildIcon(0xe62f, I18n.of(context).chat, | |||
isCanWatch, onAudio) | |||
]), | |||
), | |||
) | |||
: null, | |||
bottomNavigationBar: !isMyself ? bottomWidget : null, | |||
appBar: appBar, | |||
key: registKey, | |||
body: SafeArea( | |||
@@ -2654,8 +2529,7 @@ class _ProfilePageState extends State<ProfilePage> | |||
showToast(I18n.of(context).cantt_voice); | |||
return; | |||
} | |||
if (BlacklistMgr.isBlaklistMe(userInfo.userId)) { | |||
if (BlacklistMgr.isBlaklistMe(userInfo.userId)) { | |||
showToast(I18n.of(context).you_are_blaklisted); | |||
return; | |||
} | |||
@@ -2664,7 +2538,6 @@ class _ProfilePageState extends State<ProfilePage> | |||
showToast(I18n.of(context).reject_message); | |||
return; | |||
} | |||
//对方关闭陌生人消息,则提示 | |||
if (!userInfo.isCanStrangerNews) { | |||
showToast(I18n.of(context).stranger_close_tips); | |||
@@ -119,7 +119,7 @@ class _ProgramDetailPageState extends State<ProgramDetailPage> { | |||
textScaleFactor: 1.0, | |||
style: TextStyle(color: AppColors.NewAppbarTextColor), | |||
), | |||
elevation: 1, | |||
elevation: 1, | |||
leading: CustomUI.buildCustomLeading(context), | |||
centerTitle: true, | |||
); | |||
@@ -553,8 +553,7 @@ class _ProgramDetailPageState extends State<ProgramDetailPage> { | |||
list.add(button); | |||
} | |||
return Container( | |||
padding: EdgeInsets.only(left: 23, top: 10, right: 8, bottom: 10), | |||
color: Colors.white, | |||
margin: EdgeInsets.only(left: 23, top: 10, right: 8, bottom: 10), | |||
child: Column( | |||
crossAxisAlignment: CrossAxisAlignment.start, | |||
children: list, | |||
@@ -175,7 +175,7 @@ class _SearchPageState extends State<SearchPage> { | |||
child: Stack( | |||
children: <Widget>[ | |||
SmartRefresher( | |||
enablePullDown: list.length > 0, | |||
enablePullDown: list.length > 0, | |||
enablePullUp: true, | |||
header: MaterialClassicHeader(), | |||
footer: CustomUI.buildLoadingFooter(), | |||
@@ -30,7 +30,7 @@ class _AddFriendPageState extends State<AddFriendPage> { | |||
void initState() { | |||
super.initState(); | |||
print('AddFriendPage init'); | |||
print('AddFriendPage init111'); | |||
_txtCtrl.text = widget.originalName; | |||
} | |||
@@ -187,16 +187,6 @@ class _AlterSelectPageState extends State<AlterSelectPage> { | |||
} | |||
} | |||
Widget _buildAvatar(url) { | |||
return ClipRRect( | |||
borderRadius: BorderRadius.circular(6), | |||
child: CachedNetworkImage( | |||
imageUrl: url, | |||
width: Constants.ContactAvatarSize, | |||
height: Constants.ContactAvatarSize, | |||
)); | |||
} | |||
String getLetter(BuildContext context, double tileHeight, Offset globalPos) { | |||
RenderBox _box = context.findRenderObject(); | |||
var local = _box.globalToLocal(globalPos); | |||
@@ -510,7 +510,7 @@ class _CreateGroupPageState extends State<CreateGroupPage> { | |||
actions: <Widget>[ | |||
InkWell( | |||
child: Padding( | |||
padding: EdgeInsets.only(right: 12, top: 14, bottom: 14), | |||
padding: EdgeInsets.only(right: 15, top: 14, bottom: 14), | |||
child: Consumer<GroupSelectProvider>( | |||
builder: (context, counter, child) => Container( | |||
decoration: BoxDecoration( | |||
@@ -525,7 +525,7 @@ class _CreateGroupPageState extends State<CreateGroupPage> { | |||
? Colors.red | |||
: const Color(0xFF3875E9)), | |||
), | |||
padding: EdgeInsets.symmetric(horizontal: 10), | |||
padding: EdgeInsets.symmetric(horizontal: 18), | |||
alignment: Alignment.center, | |||
child: fixedText( | |||
(widget.pageType == | |||
@@ -526,8 +526,8 @@ class DailyBouusState extends State with SingleTickerProviderStateMixin { | |||
height: 37, | |||
child: Image.asset( | |||
R.assetsImagesImgFyj, | |||
width: needAnimate ? animation.value * 17 : 17, | |||
height: needAnimate ? animation.value * 17 : 17, | |||
width: needAnimate ? animation.value * 24 : 24, | |||
height: needAnimate ? animation.value * 24 : 24, | |||
), | |||
decoration: BoxDecoration( | |||
color: Color(isEnough ? 0xff2D81FF : 0xffCBCBCB), | |||
@@ -12,7 +12,6 @@ import 'package:chat/generated/i18n.dart'; | |||
import 'package:chat/models/ref_name_provider.dart'; | |||
import 'package:chat/utils/CustomUI.dart'; | |||
import 'package:chat/utils/HttpUtil.dart'; | |||
import 'package:chat/utils/LoadingDialog.dart'; | |||
import 'package:chat/utils/MessageMgr.dart'; | |||
import 'package:chat/utils/TokenMgr.dart'; | |||
import 'package:chat/utils/conversation_table.dart'; | |||
@@ -93,7 +92,7 @@ class _FriendPageState extends State<FriendPage> { | |||
avatar: '', | |||
userId: 0, | |||
iconCode: 0xe66c, | |||
title: I18n.of(LoadingManage.context).new_friends, | |||
title: I18n.of(Constants.getCurrentContext()).new_friends, | |||
gradient: LinearGradient( | |||
begin: Alignment.topCenter, | |||
end: Alignment.bottomCenter, | |||
@@ -187,11 +186,11 @@ class _FriendPageState extends State<FriendPage> { | |||
showPermission() async { | |||
if (await CustomUI.showPermissionSetting( | |||
LoadingManage.context, | |||
Constants.getCurrentContext(), | |||
PermissionGroup.contacts, | |||
I18n.of(LoadingManage.context).contact_permission)) { | |||
I18n.of(Constants.getCurrentContext()).contact_permission)) { | |||
MessageMgr().emit('PostContact'); | |||
Navigator.push(LoadingManage.context, | |||
Navigator.push(Constants.getCurrentContext(), | |||
MaterialPageRoute<void>(builder: (BuildContext context) { | |||
return ContactsPage(); | |||
})); | |||
@@ -215,6 +214,10 @@ class _FriendPageState extends State<FriendPage> { | |||
Response res = | |||
await HttpUtil().post('friendship/newFriends/record', data: data); | |||
if (res == null) { | |||
return; | |||
} | |||
var resData = res.data; | |||
if (resData['code'] == 0) { | |||
if (resData['data'] != null) { | |||
@@ -255,7 +258,7 @@ class _FriendPageState extends State<FriendPage> { | |||
avatar: '', | |||
userId: 0, | |||
iconCode: 0xe659, | |||
title: I18n.of(LoadingManage.context).scan, | |||
title: I18n.of(Constants.getCurrentContext()).scan, | |||
gradient: LinearGradient( | |||
begin: Alignment.topCenter, | |||
end: Alignment.bottomCenter, | |||
@@ -264,14 +267,14 @@ class _FriendPageState extends State<FriendPage> { | |||
const Color(0xFF3441C1), | |||
]), | |||
onPressed: () { | |||
CustomUI().goScanPage(LoadingManage.context); | |||
CustomUI().goScanPage(Constants.getCurrentContext()); | |||
}), | |||
FriendsInfo( | |||
avatar: '', | |||
userId: 0, | |||
iconCode: 0xe67a, | |||
isShowDivder: true, | |||
title: I18n.of(LoadingManage.context).contact_add, | |||
title: I18n.of(Constants.getCurrentContext()).contact_add, | |||
gradient: LinearGradient( | |||
begin: Alignment.topCenter, | |||
end: Alignment.bottomCenter, | |||
@@ -299,7 +302,7 @@ class _FriendPageState extends State<FriendPage> { | |||
userId: 0, | |||
iconCode: 0xe662, | |||
isShowDivder: true, | |||
title: I18n.of(LoadingManage.context).add_friends, | |||
title: I18n.of(Constants.getCurrentContext()).add_friends, | |||
gradient: LinearGradient( | |||
begin: Alignment.topCenter, | |||
end: Alignment.bottomCenter, | |||
@@ -308,7 +311,7 @@ class _FriendPageState extends State<FriendPage> { | |||
const Color(0xFF6118A6), | |||
]), | |||
onPressed: () async { | |||
Navigator.push(LoadingManage.context, | |||
Navigator.push(Constants.getCurrentContext(), | |||
MaterialPageRoute<void>(builder: (BuildContext context) { | |||
return SearchNewFriendsPage(); | |||
})); | |||
@@ -9,11 +9,10 @@ import 'package:chat/home/unread_dot_widget.dart'; | |||
import 'package:chat/models/UserInfo.dart'; | |||
import 'package:chat/models/ref_name_provider.dart'; | |||
import 'package:chat/utils/HttpUtil.dart'; | |||
import 'package:chat/utils/LoadingDialog.dart'; | |||
import 'package:chat/utils/MessageMgr.dart'; | |||
import 'package:chat/utils/TokenMgr.dart'; | |||
import 'package:chat/utils/app_navigator.dart'; | |||
import 'package:chat/utils/file_transfer_page.dart'; | |||
import 'package:chat/utils/file_preview_local.dart'; | |||
import 'package:chat/utils/local_notification_util.dart'; | |||
import 'package:chat/utils/msgHandler.dart'; | |||
import 'package:chat/utils/receive_share_file.dart'; | |||
@@ -143,7 +142,6 @@ class _HomeMainState extends State<HomeMain> { | |||
@override | |||
void initState() { | |||
MsgHandler.context = context; | |||
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light); | |||
super.initState(); | |||
@@ -254,10 +252,10 @@ class _HomeMainState extends State<HomeMain> { | |||
goShareInfo(data) async { | |||
Future.delayed(Duration(milliseconds: 1000), () { | |||
Navigator.of(LoadingManage.context).push( | |||
Navigator.of(Constants.getCurrentContext()).push( | |||
new MaterialPageRoute( | |||
builder: (context) { | |||
return FileTransferPage(data); | |||
return FilePreview(data); | |||
}, | |||
), | |||
); | |||
@@ -41,8 +41,6 @@ class _LastChatItemState extends State<LastChatItem> { | |||
lastMessageModel = widget.lastMessageModel; | |||
initUserInfo(); | |||
// initUserInfo(); | |||
// initUserInfo(); | |||
MessageMgr().on('UpdateUserInfo', msgUpdateUserInfo); | |||
} | |||
@@ -162,22 +160,5 @@ class _LastChatItemState extends State<LastChatItem> { | |||
enterType: widget.enterType, enterContent: widget.enterContent); | |||
}, | |||
); | |||
// FutureBuilder( | |||
// future: _friendInfoFuture, | |||
// builder: (BuildContext context, AsyncSnapshot snapshot) { | |||
// if (snapshot.connectionState == ConnectionState.done) { | |||
// if (snapshot.hasError) { | |||
// return Container(); | |||
// } else { | |||
// UserInfo friendInfo = snapshot.data; | |||
// if (friendInfo == null) { | |||
// return Container(); | |||
// } | |||
// } else { | |||
// return Container(); | |||
// } | |||
// }); | |||
} | |||
} |
@@ -17,7 +17,7 @@ import 'package:permission_handler/permission_handler.dart'; | |||
class LastChatPage extends StatefulWidget { | |||
final bool needRobot; | |||
final int enterType; // 0默认 1图片 | |||
final int enterType; // 0默认 1图片 2转发消息 | |||
final dynamic enterContent; | |||
LastChatPage({this.needRobot = true, this.enterType = 0, this.enterContent}); | |||
@@ -6,7 +6,6 @@ import 'package:chat/data/WebData.dart'; | |||
import 'package:chat/data/constants.dart'; | |||
import 'package:chat/data/conversation.dart'; | |||
import 'package:chat/generated/i18n.dart'; | |||
import 'package:chat/home/InfoList.dart'; | |||
import 'package:chat/home/ProfilePage.dart'; | |||
import 'package:chat/home/rich_title.dart'; | |||
import 'package:chat/utils/CustomUI.dart'; | |||
@@ -89,7 +89,7 @@ class MyQr extends StatelessWidget { | |||
children: <Widget>[ | |||
Row( | |||
children: <Widget>[ | |||
Container( | |||
Container( | |||
constraints: BoxConstraints(maxWidth: 170), | |||
child: Text(name, | |||
textScaleFactor: 1.0, | |||
@@ -7,7 +7,6 @@ import 'package:chat/data/group_data_mgr.dart'; | |||
import 'package:chat/generated/i18n.dart'; | |||
import 'package:chat/home/qr_scanner_overlay.dart'; | |||
import 'package:chat/utils/CustomUI.dart'; | |||
import 'package:chat/utils/LoadingDialog.dart'; | |||
import 'package:chat/utils/MessageMgr.dart'; | |||
import 'package:chat/utils/app_navigator.dart'; | |||
import 'package:flutter/material.dart'; | |||
@@ -208,7 +207,7 @@ class _QrScannerPageState extends State<QrScannerPage> | |||
showToast(I18n.of(context).no_goupr_info); | |||
return; | |||
} | |||
Navigator.push(LoadingManage.context, | |||
Navigator.push(Constants.getCurrentContext(), | |||
MaterialPageRoute<void>(builder: (BuildContext context) { | |||
return JoinGroupConfirmPage( | |||
groupInfoModel: groupInfo, | |||
@@ -32,8 +32,8 @@ class ServiceMsgModel { | |||
} | |||
class ServiceCenterPage extends StatefulWidget { | |||
int questionIndex = -1; | |||
ServiceCenterPage(this.questionIndex); | |||
final int questionIndex; | |||
ServiceCenterPage({this.questionIndex = -1}); | |||
@override | |||
_ServiceCenterPageState createState() => _ServiceCenterPageState(); | |||
@@ -1,5 +1,4 @@ | |||
import 'package:chat/generated/i18n.dart'; | |||
import 'package:chat/utils/LoadingDialog.dart'; | |||
import 'package:chat/utils/screen.dart'; | |||
import 'package:chat/utils/sp_utils.dart'; | |||
import 'package:flutter/cupertino.dart'; | |||
@@ -34,11 +33,11 @@ class SplashPageState extends State<SplashPage> { | |||
void initState() { | |||
super.initState(); | |||
list.add(SplashBean('assets/images/img_splash_1.png',I18n.of( LoadingManage.context).splash_tips1 , I18n.of( LoadingManage.context).splash_tips_content1, | |||
list.add(SplashBean('assets/images/img_splash_1.png',I18n.of( Constants.getCurrentContext()).splash_tips1 , I18n.of( Constants.getCurrentContext()).splash_tips_content1, | |||
Color(0xffEC527D))); | |||
list.add(SplashBean('assets/images/img_splash_2.png', I18n.of( LoadingManage.context).splash_tips2, I18n.of( LoadingManage.context).splash_tips_content2, | |||
list.add(SplashBean('assets/images/img_splash_2.png', I18n.of( Constants.getCurrentContext()).splash_tips2, I18n.of( Constants.getCurrentContext()).splash_tips_content2, | |||
Color(0xffB439EB))); | |||
list.add(SplashBean('assets/images/img_splash_3.png', I18n.of( LoadingManage.context).splash_tips3, I18n.of( LoadingManage.context).splash_tips_content3, | |||
list.add(SplashBean('assets/images/img_splash_3.png', I18n.of( Constants.getCurrentContext()).splash_tips3, I18n.of( Constants.getCurrentContext()).splash_tips_content3, | |||
Color(0xff2B79F7))); | |||
pageController = PageController( | |||
@@ -12,7 +12,6 @@ import 'package:chat/home/splash_page.dart'; | |||
import 'package:chat/models/gift_select_provider.dart'; | |||
import 'package:chat/models/money_change.dart'; | |||
import 'package:chat/models/ref_name_provider.dart'; | |||
import 'package:chat/utils/LoadingDialog.dart'; | |||
import 'package:chat/utils/MessageMgr.dart'; | |||
import 'package:chat/utils/NetUtil.dart'; | |||
import 'package:chat/utils/OtherLogin.dart'; | |||
@@ -115,7 +114,7 @@ void setCustomErrorPage(BuildContext context) { | |||
Container( | |||
margin: EdgeInsets.only(top: ScreenUtil().setHeight(50)), | |||
child: Text( | |||
I18n.of(LoadingManage.context).server_error_tips, | |||
I18n.of(Constants.getCurrentContext()).server_error_tips, | |||
style: TextStyle(color: Color(0xFF8F8E8E), fontSize: 18), | |||
), | |||
), | |||
@@ -214,7 +213,6 @@ class MyApp extends StatefulWidget { | |||
_MyAppState createState() => _MyAppState(); | |||
} | |||
final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>(); | |||
class _MyAppState extends State<MyApp> with WidgetsBindingObserver { | |||
final i18n = I18n.delegate; | |||
@@ -232,15 +230,10 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver { | |||
initVersionName(); | |||
askLocationPermission(); | |||
MsgHandler.context = context; | |||
I18n.onLocaleChanged = onLocaleChange; | |||
WidgetsBinding.instance.addObserver(this); | |||
ReceiveShareFile.init(); | |||
ScreenShot.getFileStream(); | |||
ScreenShot.getFileStream(); | |||
} | |||
isAvailableAppleSignIn() async { | |||
@@ -294,9 +287,6 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver { | |||
MessageMgr().emit( | |||
'Receive AudioChat Request', MsgHandler.audioChatRequestFriendId); | |||
} | |||
break; | |||
case AppLifecycleState.paused: // 应用程序不可见,后台 | |||
print('切换到后台'); | |||
@@ -392,7 +382,7 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver { | |||
// 此处 | |||
return 'Hibok'; | |||
}, | |||
navigatorKey: navigatorKey, | |||
navigatorKey: Constants.navigatorKey, | |||
routes: <String, WidgetBuilder>{ | |||
'/main': (BuildContext context) => HomeMain(), | |||
}, | |||
@@ -417,8 +407,7 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver { | |||
} | |||
goIndex() { | |||
LoadingManage.context = navigatorKey.currentState.overlay.context; | |||
if (!isOpen) { | |||
return SplashPage(); | |||
} else { | |||
@@ -137,7 +137,7 @@ class LocationPickerState extends State<LocationPicker> { | |||
), | |||
Expanded( | |||
child: Text( | |||
"Finding place...", | |||
"搜索中...", | |||
style: TextStyle( | |||
fontSize: 16, | |||
), | |||
@@ -80,7 +80,7 @@ class SearchInputState extends State { | |||
keyboardAppearance: Brightness.light, | |||
style: TextStyle(textBaseline: TextBaseline.alphabetic), | |||
decoration: InputDecoration( | |||
hintText: 'Search place', | |||
hintText: '搜索位置', | |||
border: InputBorder.none, | |||
), | |||
controller: editController, | |||
@@ -8,7 +8,6 @@ import 'package:chat/models/last_message_model.dart'; | |||
import 'package:chat/models/ref_name_provider.dart'; | |||
import 'package:chat/proto/chat.pb.dart'; | |||
import 'package:chat/utils/HttpUtil.dart'; | |||
import 'package:chat/utils/LoadingDialog.dart'; | |||
import 'package:chat/utils/MessageMgr.dart'; | |||
import 'package:chat/utils/msgHandler.dart'; | |||
import 'package:chat/utils/screen.dart'; | |||
@@ -82,19 +81,19 @@ class _LastMsgDescriptionState extends State<LastMsgDescription> { | |||
} | |||
break; | |||
case ChatType.EmoticonType: | |||
desc = '[${I18n.of(LoadingManage.context).emoji}]'; | |||
desc = '[${I18n.of(Constants.getCurrentContext()).emoji}]'; | |||
break; | |||
case ChatType.ImageChatType: | |||
desc = '[${I18n.of(LoadingManage.context).picture}]'; | |||
desc = '[${I18n.of(Constants.getCurrentContext()).picture}]'; | |||
break; | |||
case ChatType.ShortVideoChatType: | |||
desc = '[${I18n.of(LoadingManage.context).video}]'; | |||
desc = '[${I18n.of(Constants.getCurrentContext()).video}]'; | |||
break; | |||
case ChatType.PlaceChatType: | |||
desc = '[${I18n.of(LoadingManage.context).locate}]'; | |||
desc = '[${I18n.of(Constants.getCurrentContext()).locate}]'; | |||
break; | |||
case ChatType.ShortVoiceChatType: | |||
desc = '[${I18n.of(LoadingManage.context).voice}]'; | |||
desc = '[${I18n.of(Constants.getCurrentContext()).voice}]'; | |||
break; | |||
case ChatType.GiftChatType: | |||
@@ -102,9 +101,9 @@ class _LastMsgDescriptionState extends State<LastMsgDescription> { | |||
GiftChat.fromBuffer(widget.lastMessageModel.msgContent); | |||
if (giftChat.tuId == UserData().basicInfo.userId) { | |||
desc = I18n.of(LoadingManage.context).you_get; | |||
desc = I18n.of(Constants.getCurrentContext()).you_get; | |||
} else { | |||
desc = I18n.of(LoadingManage.context).you_give; | |||
desc = I18n.of(Constants.getCurrentContext()).you_give; | |||
} | |||
break; | |||
@@ -118,21 +117,21 @@ class _LastMsgDescriptionState extends State<LastMsgDescription> { | |||
if (wallet.state == RedWalletState.Received) { | |||
var myId = UserData().basicInfo.userId; | |||
if (wallet.suId == myId) { | |||
desc = I18n.of(LoadingManage.context) | |||
desc = I18n.of(Constants.getCurrentContext()) | |||
.get_money | |||
.replaceFirst('/s1', fdName); | |||
} else { | |||
desc = I18n.of(LoadingManage.context) | |||
desc = I18n.of(Constants.getCurrentContext()) | |||
.you_get_money | |||
.replaceFirst('/s1', fdName); | |||
} | |||
} else if (wallet.state == RedWalletState.Expire) { | |||
desc = I18n.of(LoadingManage.context).money_over; | |||
desc = I18n.of(Constants.getCurrentContext()).money_over; | |||
} else { | |||
print('WWWWW${wallet.state}'); | |||
} | |||
} else { | |||
desc = '[${I18n.of(LoadingManage.context).red_money}]'; | |||
desc = '[${I18n.of(Constants.getCurrentContext()).red_money}]'; | |||
} | |||
break; | |||
@@ -88,19 +88,6 @@ class _PhotoSelectMenuState extends State<PhotoSelectMenu> { | |||
setState(() {}); | |||
} | |||
Widget _mask() { | |||
return GestureDetector( | |||
onTap: () { | |||
print('到mask了'); | |||
clearOverlay(); | |||
}, | |||
child: Expanded( | |||
child: Container( | |||
width: MediaQuery.of(context).size.width, | |||
color: Color.fromRGBO(0, 0, 0, 0.1), | |||
))); | |||
} | |||
void clearOverlay() { | |||
if (overlayEntry != null) { | |||
overlayEntry.remove(); | |||
@@ -219,7 +219,7 @@ class PayWayContentState extends State<PayWayContent> { | |||
webPage: url, | |||
title: '点我代付[${widget.money}元]', | |||
thumbnail: | |||
"http://datasm.chengyouhd.com/Upload/default/icon120.png", | |||
"http://datasm.chengyouhd.com/Upload/default/icon120.png", | |||
description: '[${UserData().basicInfo.nickName}]正在购买H币,点击帮我支付吧'); | |||
fluwx.share(model); | |||
} | |||
@@ -1109,27 +1109,23 @@ class CustomUI { | |||
if (height == null) { | |||
height = MediaQuery.of(context).size.height * 0.8; | |||
} | |||
return InkWell( | |||
onTap: null, | |||
return Container( | |||
width: MediaQuery.of(context).size.width, | |||
height: height, | |||
alignment: Alignment.topCenter, | |||
child: Container( | |||
width: MediaQuery.of(context).size.width, | |||
height: height, | |||
alignment: Alignment.topCenter, | |||
child: Container( | |||
width: 40, | |||
height: 40, | |||
margin: EdgeInsets.only(top: 20), | |||
padding: EdgeInsets.all(10), | |||
decoration: BoxDecoration( | |||
shape: BoxShape.circle, | |||
color: Colors.white, | |||
boxShadow: [ | |||
BoxShadow(blurRadius: 3.0, color: Colors.black26) | |||
]), | |||
child: new CircularProgressIndicator( | |||
strokeWidth: 2, | |||
), | |||
))); | |||
width: 40, | |||
height: 40, | |||
margin: EdgeInsets.only(top: 20), | |||
padding: EdgeInsets.all(10), | |||
decoration: BoxDecoration( | |||
shape: BoxShape.circle, | |||
color: Colors.white, | |||
boxShadow: [BoxShadow(blurRadius: 3.0, color: Colors.black26)]), | |||
child: new CircularProgressIndicator( | |||
strokeWidth: 2, | |||
), | |||
)); | |||
} | |||
static Widget buildLoadingFooter() { | |||
@@ -87,7 +87,7 @@ class HttpUtil { | |||
return response; // continue | |||
}, onError: (DioError e) async { | |||
// Do something with response error | |||
showToast(I18n.of(LoadingManage.context).net_error); | |||
showToast(I18n.of(Constants.getCurrentContext()).net_error); | |||
return e; //continue | |||
})); | |||
} | |||
@@ -172,7 +172,7 @@ class HttpUtil { | |||
} | |||
print('post请求发生错误:$e'); | |||
if (isShowLoading) LoadingManage().closeLoading(); | |||
showToast(I18n.of(LoadingManage.context).server_error_tips); | |||
showToast(I18n.of(Constants.getCurrentContext()).server_error_tips); | |||
if (failback != null) failback(); | |||
} | |||
return response; | |||
@@ -282,15 +282,13 @@ class HttpUtil { | |||
print('用户信息resData $resData'); | |||
if (resData['code'] == 0) { | |||
var info = UserInfo.fromJson(resData['data']); | |||
info.isBlackened | |||
info.isBlackened | |||
? BlacklistMgr.addBlackListMe(info.userId) | |||
: BlacklistMgr.removeBalckListMe(info.userId); | |||
info.isBlackList | |||
? BlacklistMgr.addMyBlackList(info.userId) | |||
: BlacklistMgr.removeMyBalckList(info.userId); | |||
friendCache[friendId] = info; | |||
FriendListMgr().updateFriendInfo(info); | |||
UserInfoTable().insertUser(info); | |||
@@ -353,7 +351,6 @@ class HttpUtil { | |||
if (resData['code'] == 0) { | |||
var info = UserInfo.fromJson(resData['data']); | |||
info.isBlackened | |||
? BlacklistMgr.addBlackListMe(info.userId) | |||
: BlacklistMgr.removeBalckListMe(info.userId); | |||
@@ -361,7 +358,6 @@ class HttpUtil { | |||
info.isBlackList | |||
? BlacklistMgr.addMyBlackList(info.userId) | |||
: BlacklistMgr.removeMyBalckList(info.userId); | |||
FriendListMgr().updateFriendInfo(info); | |||
friendCache[info.userId] = info; | |||
MessageMgr().emit('UpdateUserInfo', info); | |||
@@ -1203,7 +1199,7 @@ class HttpUtil { | |||
//根据经纬度获取用户国家城市 | |||
getAddress(double lon, double lat) async { | |||
Map data = { | |||
"lon": lon.toString(), | |||
"lon": lon.toString(), | |||
"lat": lat.toString(), | |||
}; | |||
data['sign'] = TokenMgr().getSign(data); | |||
@@ -1244,12 +1240,12 @@ class HttpUtil { | |||
} | |||
} | |||
//根据经纬度更新当前城市 | |||
//根据经纬度获取用户国家城市 | |||
changeCurrentCity(double lon, double lat, callback) async { | |||
if (UserData().basicInfo.userId == null) return; | |||
Map data = { | |||
"userId": UserData().basicInfo.userId, | |||
"lon": lon.toString(), | |||
"lon": lon.toString(), | |||
"lat": lat.toString(), | |||
}; | |||
data['sign'] = TokenMgr().getSign(data); | |||
@@ -1280,8 +1276,7 @@ class HttpUtil { | |||
callback(resData['data']['UserId']); | |||
} | |||
} | |||
//拉黑用户 | |||
//拉黑用户 | |||
blackUser(int userId, callback) async { | |||
Map data = { | |||
"userid": UserData().basicInfo.userId, | |||
@@ -1354,7 +1349,6 @@ class HttpUtil { | |||
callback(); | |||
} | |||
} | |||
//向企业服务助手提交信息 | |||
Future<bool> commitInfoToCompany(MsgModel msgModel) async { | |||
Map data = { | |||
@@ -1366,7 +1360,7 @@ class HttpUtil { | |||
msgModel.state = MsgState.Sending; | |||
print('commitInfoToCompany 参数 $data'); | |||
print('commitInfoToCompany 参数 $data'); | |||
Response res = await HttpUtil().post('feedback/user/insert', data: data); | |||
if (res == null) { | |||
@@ -1387,4 +1381,20 @@ class HttpUtil { | |||
showToast(resData['msg']); | |||
return false; | |||
} | |||
//焚阅照片恢复 | |||
resetPhoto(callback) async { | |||
Map data = { | |||
"userId": UserData().basicInfo.userId, | |||
}; | |||
data['sign'] = TokenMgr().getSign(data); | |||
Response res = await HttpUtil() | |||
.post('user/recover/photos', data: data, isShowLoading: true); | |||
Map resData = res.data; | |||
if (resData['code'] == 0) { | |||
showToast(resData['msg']); | |||
callback(); | |||
} | |||
} | |||
} |
@@ -5,6 +5,7 @@ | |||
import 'package:flutter/material.dart'; | |||
import 'package:chat/utils/my_dialog.dart' as myDialog; | |||
import 'package:chat/data/constants.dart'; | |||
class LoadingManage { | |||
//私有构造函数 | |||
@@ -16,10 +17,9 @@ class LoadingManage { | |||
//工厂构造函数 | |||
factory LoadingManage() => _singleton; | |||
static BuildContext context; | |||
showLoading() { | |||
myDialog.showDialog( | |||
context: context, | |||
context: Constants.getCurrentContext(), | |||
barrierDismissible: true, | |||
builder: (BuildContext context) { | |||
return LoadingDialog(); | |||
@@ -27,7 +27,7 @@ class LoadingManage { | |||
} | |||
closeLoading() { | |||
Navigator.of(context).pop(); | |||
Constants.getCurrentState().pop(); | |||
} | |||
} | |||
@@ -85,7 +85,7 @@ class _MessageBoxState extends State<MessageBox> { | |||
), | |||
); | |||
} else if (str == 'black') { | |||
HttpUtil().blackUser(userId, () {}); | |||
HttpUtil().blackUser(userId, () {}); | |||
} else if (str == 'noContent') { | |||
var data = { | |||
"userId": UserData().basicInfo.userId, | |||
@@ -481,7 +481,7 @@ class _MessageBoxState extends State<MessageBox> { | |||
_buildTimebox(data), | |||
_buildImgSet(data), | |||
_buildImgList(data), | |||
widget.isDetail ? Container() : _buildDivder(), | |||
widget.isDetail ? Container() : _buildDivder(), | |||
_buildIconButtonList(data), | |||
//_buildContent(), | |||
], | |||
@@ -9,7 +9,6 @@ import 'package:chat/data/constants.dart'; | |||
import 'package:chat/data/group_data_mgr.dart'; | |||
import 'package:chat/generated/i18n.dart'; | |||
import 'package:chat/proto/all.pbserver.dart'; | |||
import 'package:chat/utils/LoadingDialog.dart'; | |||
import 'package:chat/utils/net_state_util.dart'; | |||
import 'package:chat/utils/screen.dart'; | |||
import 'package:chat/utils/upload_util.dart'; | |||
@@ -164,7 +163,7 @@ class NetWork { | |||
} else { | |||
_stateBloc.addState(ChatState.loginFailed); | |||
print('登录失败${msgContent.errorCode}'); | |||
showToast(I18n.of(LoadingManage.context).fail); | |||
showToast(I18n.of(Constants.getCurrentContext()).fail); | |||
} | |||
} else if (msgId == 3) { | |||
//用户登出,其他设备替换 | |||
@@ -12,8 +12,8 @@ import 'package:oktoast/oktoast.dart'; | |||
import '../utils/HttpUtil.dart'; | |||
import 'package:dio/dio.dart'; | |||
import "../data/UserData.dart"; | |||
import '../utils/TokenMgr.dart'; | |||
import 'TempUserChips.dart'; | |||
import 'TokenMgr.dart'; | |||
class TempUserCard extends StatelessWidget { | |||
final String userName; | |||
@@ -38,29 +38,31 @@ class TempUserCard extends StatelessWidget { | |||
TempUserCard( | |||
{Key key, | |||
this.userName, | |||
this.isReal: false, | |||
this.city, | |||
this.age, | |||
this.constellation, | |||
this.professional, | |||
this.isOnline, | |||
this.distance, | |||
this.userId, | |||
this.isLove: false, | |||
this.sex, | |||
this.headUrl: '', | |||
this.payImg: false, | |||
this.imgNum: 0, | |||
this.isHidden: false, | |||
this.member: 0, | |||
this.hiddenDistince: false, | |||
this.nameSize = 8, | |||
this.isBalck: false}) | |||
this.userName, | |||
this.isReal: false, | |||
this.city, | |||
this.age, | |||
this.constellation, | |||
this.professional, | |||
this.isOnline, | |||
this.distance, | |||
this.userId, | |||
this.isLove: false, | |||
this.sex, | |||
this.headUrl: '', | |||
this.payImg: false, | |||
this.imgNum: 0, | |||
this.isHidden: false, | |||
this.member: 0, | |||
this.hiddenDistince: false, | |||
this.nameSize = 8, | |||
this.isBalck: false}) | |||
: super(key: key); | |||
@override | |||
Widget build(BuildContext context) { | |||
bool isVIP = member > 0; | |||
bool isSVIP = member == 2; | |||
@@ -70,27 +72,27 @@ class TempUserCard extends StatelessWidget { | |||
return Stack( | |||
children: <Widget>[ | |||
Container( | |||
height: height - 40, | |||
width: height - 40, | |||
height: height-40, | |||
width: height-40, | |||
child: ClipRRect( | |||
borderRadius: BorderRadius.only( | |||
topLeft: Radius.circular(15), | |||
topRight: Radius.circular(15)), | |||
child: headUrl == '' || headUrl == null | |||
? Image.asset( | |||
Constants.DefaultHeadImgUrl, | |||
width: height - 40, | |||
height: height - 40, | |||
) | |||
Constants.DefaultHeadImgUrl, | |||
width: height-40, | |||
height: height-40, | |||
) | |||
: CachedNetworkImage( | |||
imageUrl: headUrl, | |||
placeholder: (context, url) => Image.asset( | |||
Constants.DefaultHeadImgUrl, | |||
width: height - 40, | |||
height: height - 40, | |||
), | |||
fit: BoxFit.cover, | |||
)), | |||
imageUrl: headUrl, | |||
placeholder: (context, url) => Image.asset( | |||
Constants.DefaultHeadImgUrl, | |||
width: height-40, | |||
height: height-40, | |||
), | |||
fit: BoxFit.cover, | |||
)), | |||
), | |||
Positioned( | |||
left: 0, | |||
@@ -100,15 +102,16 @@ class TempUserCard extends StatelessWidget { | |||
width: 54, | |||
decoration: BoxDecoration( | |||
color: Colors.black54, | |||
borderRadius: | |||
BorderRadius.only(topRight: Radius.circular(10))), | |||
borderRadius: BorderRadius.only( | |||
topRight: Radius.circular(10))), | |||
child: Row( | |||
//mainAxisAlignment: MainAxisAlignment.spaceEvenly, | |||
children: <Widget>[ | |||
Padding( | |||
padding: EdgeInsets.only(left: 6), | |||
child: | |||
Icon(Icons.image, size: 15, color: Colors.white)), | |||
Icon(Icons.image, size: 15, color: Colors.white)), | |||
Padding( | |||
padding: EdgeInsets.only(left: 5, top: 2), | |||
child: fixedText(imgNum.toString(), | |||
@@ -129,25 +132,87 @@ class TempUserCard extends StatelessWidget { | |||
fontSize: 15), | |||
isReal && sex == 2 | |||
? Container( | |||
margin: EdgeInsets.only(left: 5), | |||
padding: | |||
EdgeInsets.only(top: 2, bottom: 2, left: 5, right: 5), | |||
alignment: Alignment.center, | |||
decoration: BoxDecoration( | |||
borderRadius: BorderRadius.circular(10), | |||
color: Constants.PurpleBackgroundColor, | |||
), | |||
child: fixedText('Real', fontSize: 8, color: Colors.white)) | |||
margin: EdgeInsets.only(left: 5), | |||
padding: | |||
EdgeInsets.only(top: 2, bottom: 2, left: 5, right: 5), | |||
alignment: Alignment.center, | |||
decoration: BoxDecoration( | |||
borderRadius: BorderRadius.circular(10), | |||
color: Constants.PurpleBackgroundColor, | |||
), | |||
child: fixedText('Real', fontSize: 8, color: Colors.white)) | |||
: Container(), | |||
isVIP && sex == 1 | |||
? Container( | |||
margin: EdgeInsets.only(left: 5), | |||
child: isSVIP ? Constants.svipIcon : Constants.vipIcon) | |||
margin: EdgeInsets.only(left: 5), | |||
child: isSVIP ? Constants.svipIcon : Constants.vipIcon) | |||
: Container(), | |||
], | |||
); | |||
} | |||
// void _selectValue(str) async { | |||
// if (str == 'collection') { | |||
// Map data = { | |||
// "userid": UserData().basicInfo.userId, | |||
// "type": 0, | |||
// "followUserId": this.userId, | |||
// }; | |||
// data['sign'] = TokenMgr().getSign(data); | |||
// Response res = await HttpUtil() | |||
// .post('userfollow/follow/insert', data: data, isShowLoading: true); | |||
// Map resData = res.data; | |||
// if (resData['code'] == 0) { | |||
// MessageMgr().emit('refresh_love_list', {'UserId': userId, 'flag': 0}); | |||
// showToast(resData['msg']); | |||
// } | |||
// } else if (str == 'cancleCollection') { | |||
// Map data = { | |||
// "userid": UserData().basicInfo.userId, | |||
// "type": 0, | |||
// "followUserId": this.userId, | |||
// }; | |||
// data['sign'] = TokenMgr().getSign(data); | |||
// Response res = await HttpUtil() | |||
// .post('userfollow/follow/cancel', data: data, isShowLoading: true); | |||
// Map resData = res.data; | |||
// if (resData['code'] == 0) { | |||
// MessageMgr().emit('refresh_love_list', {'UserId': userId, 'flag': 2}); | |||
// showToast(resData['msg']); | |||
// } | |||
// } else if (str == 'black') { | |||
// Map data = { | |||
// "userid": UserData().basicInfo.userId, | |||
// "type": 1, | |||
// "followUserId": this.userId, | |||
// }; | |||
// data['sign'] = TokenMgr().getSign(data); | |||
// Response res = | |||
// await HttpUtil().post('userfollow/follow/insert', data: data); | |||
// Map resData = res.data; | |||
// showToast(resData['msg']); | |||
// if (resData['code'] == 0) { | |||
// MessageMgr().emit('refresh_love_list', {'UserId': userId, 'flag': 1}); | |||
// } | |||
// } else if (str == 'cancleBlack') { | |||
// var data = { | |||
// "userid": UserData().basicInfo.userId, | |||
// "type": 1, | |||
// "followUserId": this.userId, | |||
// }; | |||
// data['sign'] = TokenMgr().getSign(data); | |||
// Response res = | |||
// await HttpUtil().post('userfollow/follow/cancel', data: data); | |||
// Map resData = res.data; | |||
// showToast(resData['msg']); | |||
// if (resData['code'] == 0) { | |||
// MessageMgr().emit('refresh_love_list', {'UserId': userId, 'flag': 2}); | |||
// } | |||
// } | |||
// } | |||
//距离、在线以及相册 | |||
Widget otherWidget() { | |||
var greyColor = const Color(0xFFB2B2B2); | |||
@@ -158,8 +223,8 @@ class TempUserCard extends StatelessWidget { | |||
title: hiddenDistince | |||
? I18n.of(context).secrecy | |||
: (UserData().hasLocationPermission | |||
? WebData().getDistanceString(distance) | |||
: I18n.of(context).unknown), | |||
? WebData().getDistanceString(distance) | |||
: I18n.of(context).unknown), | |||
titleColor: greyColor, | |||
isDivider: true), | |||
InfoTile( | |||
@@ -168,24 +233,24 @@ class TempUserCard extends StatelessWidget { | |||
isDivider: payImg || isHidden), | |||
isHidden | |||
? InfoTile( | |||
icon: IconData(0xe645, fontFamily: 'iconfont'), | |||
iconHeight: 22, | |||
title: I18n.of(context).application_view, | |||
titleColor: greyColor, | |||
isDivider: false, | |||
onTap: () { | |||
print('click'); | |||
}) | |||
icon: IconData(0xe645, fontFamily: 'iconfont'), | |||
iconHeight: 22, | |||
title: I18n.of(context).application_view, | |||
titleColor: greyColor, | |||
isDivider: false, | |||
onTap: () { | |||
print('click'); | |||
}) | |||
: Container(), | |||
payImg | |||
? InfoTile( | |||
icon: IconData(0xe632, fontFamily: Constants.IconFontFamily), | |||
title: I18n.of(context).paid_photo, | |||
titleColor: greyColor, | |||
isDivider: false, | |||
onTap: () { | |||
print('click'); | |||
}) | |||
icon: IconData(0xe632, fontFamily: Constants.IconFontFamily), | |||
title: I18n.of(context).paid_photo, | |||
titleColor: greyColor, | |||
isDivider: false, | |||
onTap: () { | |||
print('click'); | |||
}) | |||
: Container(), | |||
], | |||
); | |||
@@ -210,148 +275,125 @@ class TempUserCard extends StatelessWidget { | |||
), | |||
); | |||
}, | |||
child: Container( | |||
alignment: Alignment.center, | |||
color: AppColors.NewAppbarBgColor, | |||
width: Screen.width, | |||
child: Container( | |||
width: Screen.width - 40, | |||
child: Column( | |||
crossAxisAlignment: CrossAxisAlignment.center, | |||
children: <Widget>[ | |||
SizedBox( | |||
height: 23, | |||
), | |||
headImg(), | |||
Container( | |||
decoration: BoxDecoration( | |||
color: Colors.white, | |||
borderRadius: BorderRadius.only( | |||
bottomLeft: Radius.circular(15), | |||
bottomRight: Radius.circular(15))), | |||
child: Column( | |||
children: <Widget>[ | |||
Container( | |||
//背景 | |||
padding: EdgeInsets.only( | |||
left: 15, right: 10, bottom: 14.5, top: 5), | |||
child: Column( | |||
children: <Widget>[ | |||
Stack( | |||
children: <Widget>[ | |||
Row( | |||
children: <Widget>[ | |||
//头像图片 | |||
//信息 | |||
Container( | |||
width: MediaQuery.of(context) | |||
.size | |||
.width - | |||
104, | |||
child: Column( | |||
crossAxisAlignment: | |||
CrossAxisAlignment.start, | |||
mainAxisAlignment: | |||
MainAxisAlignment.end, | |||
children: <Widget>[ | |||
nameState(), //名字以及状态 | |||
//用户的信息标记 | |||
Padding( | |||
padding: | |||
EdgeInsets.only(top: 9)), | |||
TempUserChips( | |||
city: city, | |||
age: age, | |||
constellation: constellation, | |||
professional: professional), | |||
Padding( | |||
padding: | |||
EdgeInsets.only(top: 4)), | |||
otherWidget(), | |||
], | |||
)), | |||
], | |||
), | |||
], | |||
) | |||
], | |||
)), | |||
SizedBox( | |||
height: 5, | |||
), | |||
Container( | |||
child: //赞 | |||
sex == UserData().basicInfo.sex | |||
? InkWell( | |||
onTap: () { | |||
showToast(UserData().isMan() | |||
? I18n.of(context).not_love | |||
: I18n.of(context).not_love2); | |||
}, | |||
child: Container( | |||
width: 100, | |||
height: 30, | |||
decoration: BoxDecoration( | |||
border: Border.all( | |||
color: Color(0xFF878787), | |||
width: 1), | |||
borderRadius: | |||
BorderRadius.circular(16)), | |||
padding: EdgeInsets.only( | |||
left: 15, | |||
right: 15, | |||
bottom: 5, | |||
top: 5), | |||
child: Row( | |||
mainAxisAlignment: | |||
MainAxisAlignment.center, | |||
children: <Widget>[ | |||
Icon( | |||
IconData( | |||
0xe625, | |||
fontFamily: | |||
Constants.IconFontFamily, | |||
), | |||
size: 15, | |||
color: Color(0xffB2B2B2), | |||
), | |||
SizedBox( | |||
width: 5, | |||
), | |||
Text( | |||
'LOVE', | |||
style: prefix0.TextStyle( | |||
color: Color(0xffB2B2B2)), | |||
) | |||
], | |||
))) | |||
: LoveToggle( | |||
isActive: isLove, | |||
onTap: (bool isActive) async { | |||
if (isActive) { | |||
HttpUtil().setLove(userId, () { | |||
MessageMgr().emit('refresh_love_list', | |||
{'UserId': userId, 'flag': 0}); | |||
}); | |||
} else { | |||
HttpUtil().cancleLove(userId, () { | |||
MessageMgr().emit('refresh_love_list', | |||
{'UserId': userId, 'flag': 2}); | |||
}); | |||
} | |||
}), | |||
), | |||
SizedBox( | |||
height: 15, | |||
), | |||
], | |||
), | |||
), | |||
], | |||
), | |||
), | |||
)); | |||
child: Container(alignment: Alignment.center,color: AppColors.NewAppbarBgColor,width: Screen.width,child: Container(width: Screen.width-40,child: Column( | |||
crossAxisAlignment: CrossAxisAlignment.center, | |||
children: <Widget>[ | |||
SizedBox(height: 23,), | |||
headImg(), | |||
Container(decoration: BoxDecoration(color: Colors.white,borderRadius: BorderRadius.only( | |||
bottomLeft: Radius.circular(15), | |||
bottomRight: Radius.circular(15))) ,child: Column(children: <Widget>[ | |||
Container( | |||
//背景 | |||
padding: EdgeInsets.only(left: 15,right: 10, bottom: 14.5,top: 5), | |||
child: Column(children: <Widget>[ | |||
Stack( | |||
children: <Widget>[ | |||
Row( | |||
children: <Widget>[ | |||
//头像图片 | |||
//信息 | |||
Container( | |||
width: MediaQuery.of(context).size.width - 104, | |||
child: Column( | |||
crossAxisAlignment: CrossAxisAlignment.start, | |||
mainAxisAlignment: MainAxisAlignment.end, | |||
children: <Widget>[ | |||
nameState(), //名字以及状态 | |||
//用户的信息标记 | |||
Padding(padding: EdgeInsets.only(top: 9)), | |||
TempUserChips( | |||
city: city, | |||
age: age, | |||
constellation: constellation, | |||
professional: professional), | |||
Padding(padding: EdgeInsets.only(top: 4)), | |||
otherWidget(), | |||
], | |||
)), | |||
], | |||
), | |||
], | |||
) | |||
],)), | |||
SizedBox(height: 5,), | |||
Container( | |||
child: //赞 | |||
sex == UserData().basicInfo.sex | |||
? InkWell( | |||
onTap: () { | |||
showToast(UserData().isMan() | |||
? I18n.of(context).not_love | |||
: I18n.of(context).not_love2); | |||
}, | |||
child: Container( | |||
width: 100, | |||
height: 30, | |||
decoration: BoxDecoration(border: Border.all(color: Color(0xFF878787), width: 1),borderRadius: BorderRadius.circular(16)) , | |||
padding: EdgeInsets.only( | |||
left: 15, right: 15, bottom: 5,top: 5 ), | |||
child: Row( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ | |||
Icon( | |||
IconData( | |||
0xe625, | |||
fontFamily: Constants.IconFontFamily, | |||
), | |||
size: 15, | |||
color: Color(0xffB2B2B2), | |||
), | |||
SizedBox(width: 5,), | |||
Text('LOVE',style: prefix0.TextStyle(color: Color(0xffB2B2B2)),) | |||
],))) | |||
: LoveToggle(isActive: isLove,onTap: (bool isActive) async { | |||
Map data = { | |||
"userid": UserData().basicInfo.userId, | |||
"type": 0, | |||
"followUserId": this.userId, | |||
}; | |||
data['sign'] = TokenMgr().getSign(data); | |||
if (isActive) { | |||
Response res = await HttpUtil().post( | |||
'userfollow/follow/insert', | |||
data: data, | |||
isShowLoading: true); | |||
Map resData = res.data; | |||
showToast(resData['msg']); | |||
if (resData['code'] == 0) { | |||
MessageMgr().emit('refresh_love_list', | |||
{'UserId': userId, 'flag': 0}); | |||
showToast(resData['msg']); | |||
} | |||
} else { | |||
Response res = await HttpUtil().post( | |||
'userfollow/follow/cancel', | |||
data: data, | |||
isShowLoading: true); | |||
Map resData = res.data; | |||
if (resData['code'] == 0) { | |||
MessageMgr().emit('refresh_love_list', | |||
{'UserId': userId, 'flag': 2}); | |||
showToast(resData['msg']); | |||
} | |||
} | |||
}), | |||
), | |||
SizedBox(height: 15,), | |||
],),), | |||
], | |||
),),)); | |||
} | |||
} | |||
@@ -368,12 +410,12 @@ class InfoTile extends StatelessWidget { | |||
const InfoTile( | |||
{Key key, | |||
this.title, | |||
this.titleColor, | |||
this.icon, | |||
this.onTap, | |||
this.iconHeight: TileHeight, | |||
this.isDivider = false}) | |||
this.title, | |||
this.titleColor, | |||
this.icon, | |||
this.onTap, | |||
this.iconHeight: TileHeight, | |||
this.isDivider = false}) | |||
: super(key: key); | |||
@override | |||
@@ -12,7 +12,6 @@ import 'package:oktoast/oktoast.dart'; | |||
import '../utils/HttpUtil.dart'; | |||
import 'package:dio/dio.dart'; | |||
import "../data/UserData.dart"; | |||
import '../utils/TokenMgr.dart'; | |||
class UserCard extends StatelessWidget { | |||
final String userName; | |||
@@ -277,13 +276,14 @@ class UserCard extends StatelessWidget { | |||
isActive: isLove, | |||
size: 16, | |||
onTap: (bool isActive) async { | |||
if (isActive) { | |||
HttpUtil().setLove(userId, () { | |||
HttpUtil().setLove(userId, () { | |||
MessageMgr().emit('refresh_love_list', | |||
{'UserId': userId, 'flag': 0}); | |||
}); | |||
} else { | |||
HttpUtil().cancleLove(userId, () { | |||
HttpUtil().cancleLove(userId, () { | |||
MessageMgr().emit('refresh_love_list', | |||
{'UserId': userId, 'flag': 2}); | |||
}); | |||
@@ -343,7 +343,7 @@ class InfoTile extends StatelessWidget { | |||
Container( | |||
alignment: Alignment.bottomCenter, | |||
constraints: BoxConstraints(minHeight: 17), | |||
padding: EdgeInsets.only(right: 5, bottom: 1.5), | |||
padding: EdgeInsets.only(right: 5,bottom: 1.5), | |||
child: Text(title, | |||
textScaleFactor: 1.0, | |||
style: TextStyle( | |||
@@ -10,6 +10,7 @@ import 'package:chat/home/ProfilePage.dart'; | |||
import 'package:chat/home/SearchPage.dart'; | |||
import 'package:chat/home/audio_chat_view.dart'; | |||
import 'package:chat/home/create_group_view.dart'; | |||
import 'package:chat/home/forward_view.dart'; | |||
import 'package:chat/home/group_all_member.dart'; | |||
import 'package:chat/home/group_qr_view.dart'; | |||
import 'package:chat/home/homeMain.dart'; | |||
@@ -99,28 +100,41 @@ class AppNavigator { | |||
} | |||
//聊天 | |||
static pushChatPage(BuildContext context, int friendId,{enterType=0,enterContent}) async { | |||
if(enterType==1){ | |||
static pushChatPage(BuildContext context, int friendId, | |||
{enterType = 0, enterContent}) async { | |||
if (enterType == 1) { | |||
Navigator.of(context).pop(context); | |||
} | |||
AppNavigator.push(context, ChatPage(key: Key('Chat'), friendId: friendId,enterType: enterType,enterContent: enterContent,)); | |||
AppNavigator.push( | |||
context, | |||
ChatPage( | |||
key: Key('Chat'), | |||
friendId: friendId, | |||
enterType: enterType, | |||
enterContent: enterContent, | |||
)); | |||
} | |||
//群聊 | |||
static pushGroupChatPage( | |||
BuildContext context, GroupInfoModel groupInfoModel,{enterType=0,enterContent}) async { | |||
if(enterType==1){ | |||
static pushGroupChatPage(BuildContext context, GroupInfoModel groupInfoModel, | |||
{enterType = 0, enterContent}) async { | |||
if (enterType == 1) { | |||
Navigator.of(context).pop(context); | |||
} | |||
AppNavigator.defaultPush(context, | |||
GroupChatPage(key: Key('GroupChat'), groupInfoModel: groupInfoModel,enterType: enterType,enterContent: enterContent,)); | |||
AppNavigator.defaultPush( | |||
context, | |||
GroupChatPage( | |||
key: Key('GroupChat'), | |||
groupInfoModel: groupInfoModel, | |||
enterType: enterType, | |||
enterContent: enterContent, | |||
)); | |||
} | |||
//客服 | |||
static pushServicePage(BuildContext context, {questionIndex = -1}) async { | |||
AppNavigator.push(context, ServiceCenterPage(questionIndex)); | |||
AppNavigator.push(context, ServiceCenterPage(questionIndex : questionIndex)); | |||
} | |||
//群成员列表 | |||
@@ -129,7 +143,7 @@ class AppNavigator { | |||
} | |||
//群聊二维码 | |||
static pushGroupQrPage(BuildContext context,GroupInfoModel model) { | |||
static pushGroupQrPage(BuildContext context, GroupInfoModel model) { | |||
AppNavigator.push(context, GroupQrPage(model)); | |||
} | |||
@@ -205,7 +219,7 @@ class AppNavigator { | |||
AppNavigator.push(context, TranslateRobotPage()); | |||
} | |||
//进入反馈小助手页面 | |||
//进入反馈小助手页面 | |||
static pushCompanyServerPage(BuildContext context) { | |||
AppNavigator.push(context, CompanyServerPage()); | |||
} | |||
@@ -215,5 +229,10 @@ class AppNavigator { | |||
BuildContext context, List<FriendModel> friendList) { | |||
AppNavigator.push( | |||
context, CreateGroupPage(GroupOperatingPageType.CreateGroup, [], null)); | |||
} | |||
//发起群聊界面 | |||
static pushForwardPage(BuildContext context, MsgModel msg) { | |||
AppNavigator.push(context, ForwardPage(msg)); | |||
} | |||
} |
@@ -1,6 +1,3 @@ | |||
import 'package:chat/generated/i18n.dart'; | |||
import 'package:chat/utils/LoadingDialog.dart'; | |||
import 'package:oktoast/oktoast.dart'; | |||
class BlacklistMgr { | |||
//我拉黑的用户id | |||
@@ -1,7 +1,7 @@ | |||
import 'package:chat/data/UserData.dart'; | |||
import 'package:chat/models/UserInfo.dart'; | |||
import 'package:chat/models/ref_name_provider.dart'; | |||
import 'package:chat/utils/LoadingDialog.dart'; | |||
import 'package:chat/data/constants.dart'; | |||
import 'package:chat/utils/sql_model.dart'; | |||
import 'package:flutter/material.dart'; | |||
import 'package:lpinyin/lpinyin.dart'; | |||
@@ -39,7 +39,7 @@ class FriendModel { | |||
} | |||
updataRefName() { | |||
refName = Provider.of<RefNameProvider>(LoadingManage.context, listen: false) | |||
refName = Provider.of<RefNameProvider>(Constants.getCurrentContext(), listen: false) | |||
.getRefName(friendId, name); | |||
nameTag = getNameTag(); | |||
} | |||
@@ -38,7 +38,7 @@ class BottomAreaAvoider extends StatefulWidget { | |||
/// Animation curve. Defaults to [defaultCurve] | |||
final Curve curve; | |||
ScrollController scrollTo; | |||
final ScrollController scrollTo; | |||
BottomAreaAvoider({ | |||
Key key, | |||
@@ -181,7 +181,7 @@ RenderObject findFocusedObject(RenderObject root) { | |||
final q = Queue<RenderObject>(); | |||
q.add(root); | |||
while (q.isNotEmpty) { | |||
final node = q.removeFirst(); | |||
final RenderObject node = q.removeFirst(); | |||
final config = SemanticsConfiguration(); | |||
node.describeSemanticsConfiguration(config); | |||
if (config.isFocused) { | |||
@@ -218,6 +218,7 @@ class MsgHandler { | |||
print('消息包大小超过3M'); | |||
} | |||
//本地文件为空或者等发送成功之后才可以发送 | |||
if (msg.localFile == null || msg.state >= MsgState.Uploaded) { | |||
Future.delayed(Duration(seconds: 60), () { | |||
if (msg.state != MsgState.SendingSuccess) { | |||
@@ -239,6 +240,7 @@ class MsgHandler { | |||
seq.targetId = curActiveSession; | |||
if (curActiveSession == 10000) { | |||
seq.channelType = ChatChannelType.CSD; | |||
} else { | |||
seq.channelType = | |||
@@ -527,7 +529,12 @@ class MsgHandler { | |||
msgModel.state = MsgState.DownloadFailed; | |||
} | |||
} | |||
if (msgModel.sessionId == 10000 ) { | |||
print('收到反馈小助手消息'); | |||
} | |||
if (msgModel.sessionId == curActiveSession) { | |||
MessageMgr().emit('New Chat Message', msgModel.sessionId); | |||
} | |||
} | |||
@@ -918,7 +925,7 @@ class MsgHandler { | |||
NetWork().singOut(); | |||
UserData().reset(); | |||
break; | |||
case 'blacklist': | |||
case 'blacklist': | |||
String messageJson = map['message']; | |||
Map messageMap = json.decode(messageJson); | |||
if (messageMap['Status'] == 0) { | |||
@@ -1,28 +1,26 @@ | |||
import 'dart:async'; | |||
import 'package:receive_sharing_intent/receive_sharing_intent.dart'; | |||
import 'MessageMgr.dart'; | |||
class ReceiveShareFile { | |||
static StreamSubscription _intentDataStreamSubscription; | |||
static List<SharedMediaFile> _sharedFiles; | |||
static String tempFilePath; | |||
static int mLastClickTime = 0; | |||
static int timeInterval = 3000; | |||
static void init() { | |||
// For sharing images coming from outside the app while the app is in the memory | |||
_intentDataStreamSubscription = ReceiveSharingIntent.getMediaStream() | |||
ReceiveSharingIntent.getMediaStream() | |||
.listen((List<SharedMediaFile> value) { | |||
// setState(() { | |||
// _sharedFiles = value; | |||
// print("Shared:" + (_sharedFiles?.map((f) => f.path)?.join(",") ?? "")); | |||
// }); | |||
// print('#### getfilePath ${value[0].path}'); | |||
if (currentIndex == 1) { | |||
if (value != null && value.length > 0) { | |||
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path); | |||
int nowTime = DateTime.now().millisecondsSinceEpoch; | |||
if (nowTime - mLastClickTime > timeInterval) { | |||
if (value != null && value.length > 0) { | |||
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path); | |||
} | |||
} | |||
} else { | |||
// print("### 记录下来了1"); | |||
@@ -44,9 +42,14 @@ class ReceiveShareFile { | |||
// print('#### getfilePath ${value[0].path}'); | |||
if (currentIndex == 1) { | |||
if (value != null && value.length > 0) { | |||
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path); | |||
} | |||
int nowTime = DateTime.now().millisecondsSinceEpoch; | |||
if (nowTime - mLastClickTime > timeInterval) { | |||
// do something | |||
if (value != null && value.length > 0) { | |||
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path); | |||
mLastClickTime = nowTime; | |||
} | |||
} else {} | |||
} else { | |||
// print("### 记录下来了"); | |||
if (value != null && value.length > 0) { | |||
@@ -56,11 +59,12 @@ class ReceiveShareFile { | |||
}); | |||
// For sharing or opening urls/text coming from outside the app while the app is in the memory | |||
_intentDataStreamSubscription = | |||
ReceiveSharingIntent.getTextStream().listen((String value) { | |||
print('#### getfilePath dddd $value '); | |||
MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value); | |||
print('#### getfilePath $value '); | |||
// setState(() { | |||
// _sharedText = value; | |||
// print("Shared: $_sharedText"); | |||
// }); | |||
}, onError: (err) { | |||
print("getLinkStream error: $err"); | |||
}); | |||
@@ -1,20 +1,16 @@ | |||
import 'dart:io'; | |||
import 'dart:typed_data'; | |||
import 'dart:io'; | |||
import 'package:chat/map/location_result.dart'; | |||
import 'package:chat/utils/screen.dart'; | |||
import 'package:flutter/services.dart'; | |||
import 'package:flutter_image_compress/flutter_image_compress.dart'; | |||
import 'MessageMgr.dart'; | |||
class ScreenShot { | |||
static const MethodChannel _channel = | |||
const MethodChannel('make.photo.screen.hibok'); | |||
static const EventChannel eventChannel = | |||
static const EventChannel eventChannel = | |||
const EventChannel('com.file.hibok'); | |||
static Future<List<int>> takeScreenshotImage() async { | |||
Map<String, dynamic> args = <String, dynamic>{}; | |||
Uint8List bytes = await _channel.invokeMethod('makePhotoScreen', args); | |||
@@ -45,7 +41,6 @@ class ScreenShot { | |||
return _channel.invokeMethod('isSupportGoogle', args); | |||
} | |||
static getFileStream() { | |||
eventChannel.receiveBroadcastStream().listen((Object agrs){ | |||
print('######## receiveBroadcastStream $agrs'); | |||
@@ -5,7 +5,7 @@ import 'package:chat/models/ChatMsg.dart'; | |||
import 'package:chat/models/group_info_model.dart'; | |||
import 'package:chat/models/group_info_server_model.dart'; | |||
import 'package:chat/proto/all.pbserver.dart'; | |||
import 'package:chat/utils/LoadingDialog.dart'; | |||
import 'package:chat/data/constants.dart'; | |||
import 'package:chat/utils/file_cache_mgr.dart'; | |||
import 'package:convert/convert.dart'; | |||
import 'package:dio/dio.dart'; | |||
@@ -224,12 +224,12 @@ class UploadUtil { | |||
return path; | |||
} else { | |||
msg.state = MsgState.DownloadFailed; | |||
showToast(I18n.of(LoadingManage.context).server_error_tips); | |||
showToast(I18n.of(Constants.getCurrentContext()).server_error_tips); | |||
return null; | |||
} | |||
} catch (e) { | |||
msg.state = MsgState.DownloadFailed; | |||
showToast(I18n.of(LoadingManage.context).server_error_tips); | |||
showToast(I18n.of(Constants.getCurrentContext()).server_error_tips); | |||
print(response.toString()); | |||
} | |||
} | |||