From 5d11bb546f7115bf4bbdd63ef832af892fc2eddf Mon Sep 17 00:00:00 2001 From: kaciya Date: Mon, 16 Mar 2020 17:31:55 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 6 +- lib/chat/ChatPage.dart | 22 +- lib/chat/ChatPageItem.dart | 6 + lib/chat/group_chat_view.dart | 13 + lib/chat/util_keyboard.dart | 56 ++-- lib/data/UserData.dart | 1 - lib/generated/i18n.dart | 51 +-- lib/home/AddProgram.dart | 9 +- lib/home/DiscoverPage.dart | 2 + lib/home/EditData.dart | 3 +- lib/home/InfoList.dart | 5 +- lib/home/Myprogram.dart | 3 +- lib/home/ProfilePage.dart | 17 +- lib/home/ProgramDetail.dart | 5 +- lib/home/SearchPage.dart | 2 +- lib/home/create_group_view.dart | 4 +- lib/home/daily_bonus_page.dart | 4 +- lib/home/friend_page.dart | 4 + lib/home/homeMain.dart | 4 +- lib/home/last_chat_item.dart | 19 -- lib/home/last_chat_record_widget.dart | 2 +- lib/home/money_detail.dart | 1 - lib/home/my_qr.dart | 2 +- lib/main.dart | 9 +- lib/utils/ChargeMoney.dart | 2 +- lib/utils/CustomUI.dart | 36 +- lib/utils/HttpUtil.dart | 16 +- lib/utils/MessageBox.dart | 4 +- lib/utils/NetUtil.dart | 57 ++-- lib/utils/TempUserCard.dart | 466 ++++++++++++++------------ lib/utils/UserCard.dart | 7 +- lib/utils/app_navigator.dart | 41 ++- lib/utils/msgHandler.dart | 9 +- lib/utils/receive_share_file.dart | 29 +- lib/utils/screen.dart | 5 - lib/utils/screen_shot.dart | 9 +- 36 files changed, 476 insertions(+), 455 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 73e1601..d004d6d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -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', diff --git a/lib/chat/ChatPage.dart b/lib/chat/ChatPage.dart index 3b2e3c0..f52bf34 100644 --- a/lib/chat/ChatPage.dart +++ b/lib/chat/ChatPage.dart @@ -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 { 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); } }); } diff --git a/lib/chat/ChatPageItem.dart b/lib/chat/ChatPageItem.dart index 50cb465..3f20504 100644 --- a/lib/chat/ChatPageItem.dart +++ b/lib/chat/ChatPageItem.dart @@ -614,6 +614,7 @@ class _ChatPageItemState extends State List actions = [ I18n.of(context).delete, I18n.of(context).reply, + '转发' ]; actionsFunc.add(() { @@ -623,6 +624,11 @@ class _ChatPageItemState extends State 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); diff --git a/lib/chat/group_chat_view.dart b/lib/chat/group_chat_view.dart index 64856ee..cf76619 100644 --- a/lib/chat/group_chat_view.dart +++ b/lib/chat/group_chat_view.dart @@ -106,6 +106,19 @@ class _GroupChatPageState extends State { 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); } }); } diff --git a/lib/chat/util_keyboard.dart b/lib/chat/util_keyboard.dart index 81dc032..ef4e6c7 100644 --- a/lib/chat/util_keyboard.dart +++ b/lib/chat/util_keyboard.dart @@ -163,8 +163,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; } @@ -304,38 +303,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(context); - } + int friendId = 0; + if (!isGroup) { + friendId = Provider.of(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: isGroup ? ChatChannelType.Group : ChatChannelType.Session); + var msg = MsgHandler.createSendMsg(ChatType.FileChatType, fileMsg.writeToBuffer(), + friendId: friendId, + localFile: file.path, + channelType: + isGroup ? ChatChannelType.Group : ChatChannelType.Session); + + sendMsg(msg); - sendMsg(msg); } void _sendVideo(BuildContext context) async { diff --git a/lib/data/UserData.dart b/lib/data/UserData.dart index 9980c40..21c800a 100644 --- a/lib/data/UserData.dart +++ b/lib/data/UserData.dart @@ -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); } } diff --git a/lib/generated/i18n.dart b/lib/generated/i18n.dart index 66a89a1..deadd30 100644 --- a/lib/generated/i18n.dart +++ b/lib/generated/i18n.dart @@ -5846,7 +5846,8 @@ class _I18n_vi_VN extends I18n { /// "你不能添加自己" @override String get not_add_Myself => "你不能添加自己"; - /// "对方已拉黑了你" + + /// "对方已拉黑了你" @override String get you_are_blaklisted => "对方已拉黑了你"; /// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)" @@ -8839,9 +8840,9 @@ class _I18n_zh_HK extends I18n { /// "今日簽到可領取/s1積分" @override String get today_score => "今日簽到可領取/s1積分"; - /// "1、每日簽到可領取積分,累計天數越多積分越高。\n2、積分可兌換H幣,兌換將消耗對應積分,請慎重兌換。\n3、每月最後一天將重置簽到,清零積分,請記得及時兌換。" + /// "1、每日簽到可領取積分,累計天數越多積分越高\n2、積分可兌換H幣,兌換將消耗對應積分,請慎重兌換\n3、每月最後一天將重置簽到,清零積分,請記得及時兌換" @override - String get sign_tips => "1、每日簽到可領取積分,累計天數越多積分越高。\n2、積分可兌換H幣,兌換將消耗對應積分,請慎重兌換。\n3、每月最後一天將重置簽到,清零積分,請記得及時兌換。"; + String get sign_tips => "1、每日簽到可領取積分,累計天數越多積分越高\n2、積分可兌換H幣,兌換將消耗對應積分,請慎重兌換\n3、每月最後一天將重置簽到,清零積分,請記得及時兌換"; /// "簽到" @override String get sign_in => "簽到"; @@ -9340,15 +9341,6 @@ class _I18n_zh_HK extends I18n { /// "你不能添加自己" @override String get not_add_Myself => "你不能添加自己"; - /// "對方已拉黑了你" - @override - String get you_are_blaklisted => "對方已拉黑了你"; - /// "確定恢復已被焚毀的照片嗎?\n(已經看過的用戶可以再看一次)" - @override - String get confrim_recovery => "確定恢復已被焚毀的照片嗎?\n(已經看過的用戶可以再看一次)"; - /// "發送到" - @override - String get send_to => "發送到"; @override TextDirection get textDirection => TextDirection.ltr; @@ -12333,9 +12325,9 @@ class _I18n_zh_CN extends _I18n_zh_HK { /// "今日签到可领取/s1积分" @override String get today_score => "今日签到可领取/s1积分"; - /// "1、每日签到可领取积分,累计天数越多积分越高。\n2、积分可兑换H币,兑换将消耗对应积分,请慎重兑换。\n3、每月最后一天将重置签到,清零积分,请记得及时兑换。" + /// "1、每日签到可领取积分,累计天数越多积分越高\n2、积分可兑换H币,兑换将消耗对应积分,请慎重兑换\n3、每月最后一天将重置签到,清零积分,请记得及时兑换" @override - String get sign_tips => "1、每日签到可领取积分,累计天数越多积分越高。\n2、积分可兑换H币,兑换将消耗对应积分,请慎重兑换。\n3、每月最后一天将重置签到,清零积分,请记得及时兑换。"; + String get sign_tips => "1、每日签到可领取积分,累计天数越多积分越高\n2、积分可兑换H币,兑换将消耗对应积分,请慎重兑换\n3、每月最后一天将重置签到,清零积分,请记得及时兑换"; /// "签到" @override String get sign_in => "签到"; @@ -12834,15 +12826,6 @@ class _I18n_zh_CN extends _I18n_zh_HK { /// "你不能添加自己" @override String get not_add_Myself => "你不能添加自己"; - /// "对方已拉黑了你" - @override - String get you_are_blaklisted => "对方已拉黑了你"; - /// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)" - @override - String get confrim_recovery => "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)"; - /// "发送到" - @override - String get send_to => "发送到"; @override TextDirection get textDirection => TextDirection.ltr; @@ -16325,15 +16308,6 @@ class _I18n_ko_KR extends I18n { /// "用户不存在" @override String get not_have_user => "用户不存在"; - /// "对方已拉黑了你" - @override - String get you_are_blaklisted => "对方已拉黑了你"; - /// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)" - @override - String get confrim_recovery => "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)"; - /// "發送到" - @override - String get send_to => "發送到"; @override TextDirection get textDirection => TextDirection.ltr; @@ -19318,9 +19292,9 @@ class _I18n_ja_JP extends I18n { /// "本日サインして/s1ポイントが受け入れる" @override String get today_score => "本日サインして/s1ポイントが受け入れる"; - /// "1.毎日サインしてポイントが受け入れます、累積日数が多ければ多いほどポイントが高くなります.\n2.ポイントはH幤に交換できます、交換はポイントを消費しますので慎重に交換してください.\n3.サインは毎月の最終日にリセットされ、ポイントもクリアされます。時間内に交換することを忘れないでください." + /// "1.毎日サインしてポイントが受け入れます、累積日数が多ければ多いほどポイントが高くなります\n2.ポイントはH幤に交換できます、交換はポイントを消費しますので慎重に交換してください\n3.サインは毎月の最終日にリセットされ、ポイントもクリアされます。時間内に交換することを忘れないでください " @override - String get sign_tips => "1.毎日サインしてポイントが受け入れます、累積日数が多ければ多いほどポイントが高くなります.\n2.ポイントはH幤に交換できます、交換はポイントを消費しますので慎重に交換してください.\n3.サインは毎月の最終日にリセットされ、ポイントもクリアされます。時間内に交換することを忘れないでください."; + String get sign_tips => "1.毎日サインしてポイントが受け入れます、累積日数が多ければ多いほどポイントが高くなります\n2.ポイントはH幤に交換できます、交換はポイントを消費しますので慎重に交換してください\n3.サインは毎月の最終日にリセットされ、ポイントもクリアされます。時間内に交換することを忘れないでください "; /// "サイン" @override String get sign_in => "サイン"; @@ -19819,15 +19793,6 @@ class _I18n_ja_JP extends I18n { /// "你不能添加自己" @override String get not_add_Myself => "你不能添加自己"; - /// "对方已拉黑了你" - @override - String get you_are_blaklisted => "对方已拉黑了你"; - /// "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)" - @override - String get confrim_recovery => "确定恢复已被焚毁的照片吗?\n(已经看过的用户可以再看一次)"; - /// "發送到" - @override - String get send_to => "發送到"; @override TextDirection get textDirection => TextDirection.ltr; diff --git a/lib/home/AddProgram.dart b/lib/home/AddProgram.dart index 4ca992e..c443c36 100644 --- a/lib/home/AddProgram.dart +++ b/lib/home/AddProgram.dart @@ -868,7 +868,8 @@ class _AddProgramState extends State { 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 { .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 { 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 == "" diff --git a/lib/home/DiscoverPage.dart b/lib/home/DiscoverPage.dart index 46d6217..2b4a4fc 100644 --- a/lib/home/DiscoverPage.dart +++ b/lib/home/DiscoverPage.dart @@ -691,6 +691,8 @@ class _DisCoverPageState extends State Widget _renderRow(int index, list, page) { if (index < list.length) { var userInfo = list[index]; + print('----------------------------------------------------'); + print(userInfo); return UserCard( key: UniqueKey(), userName: Provider.of(context) diff --git a/lib/home/EditData.dart b/lib/home/EditData.dart index 8984dce..e9a7c80 100644 --- a/lib/home/EditData.dart +++ b/lib/home/EditData.dart @@ -742,8 +742,7 @@ class _EditPageState extends State { 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), diff --git a/lib/home/InfoList.dart b/lib/home/InfoList.dart index 7bb2823..d109dd2 100644 --- a/lib/home/InfoList.dart +++ b/lib/home/InfoList.dart @@ -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'; @@ -18,7 +17,6 @@ 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 +25,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'ProgramDetail.dart'; + class _ConversationItem extends StatelessWidget { const _ConversationItem( {Key key, @@ -352,8 +351,6 @@ class _ConversationItem extends StatelessWidget { } } - - class InfoListPage extends StatefulWidget { @required final String title; diff --git a/lib/home/Myprogram.dart b/lib/home/Myprogram.dart index f29f67b..6271d9d 100644 --- a/lib/home/Myprogram.dart +++ b/lib/home/Myprogram.dart @@ -171,7 +171,8 @@ class _MyProgramPageState extends State { ), centerTitle: true, leading: CustomUI.buildCustomLeading(context), - elevation: 1, + + elevation: 1, actions: [ isMyself ? myPop.PopupMenuButton( diff --git a/lib/home/ProfilePage.dart b/lib/home/ProfilePage.dart index a4a805e..97924c9 100644 --- a/lib/home/ProfilePage.dart +++ b/lib/home/ProfilePage.dart @@ -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'; @@ -449,6 +448,9 @@ class _ProfilePageState extends State 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 +1149,9 @@ class _ProfilePageState extends State 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 +1429,6 @@ class _ProfilePageState extends State context, I18n.of(context).blacklist_choose, I18n.of(context).determine, () async { Navigator.pop(context); - HttpUtil().blackUser(userInfo.userId, () { isblack = true; }); @@ -2147,8 +2149,7 @@ class _ProfilePageState extends State 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 { @@ -2434,7 +2435,7 @@ class _ProfilePageState extends State ), onTap: isblack ? () async { - HttpUtil().cancleBlackUser( + HttpUtil().cancleBlackUser( userInfo.userId, () { Navigator.of(context).pop(); isblack = false; @@ -2654,8 +2655,7 @@ class _ProfilePageState extends State 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 +2664,6 @@ class _ProfilePageState extends State showToast(I18n.of(context).reject_message); return; } - //对方关闭陌生人消息,则提示 if (!userInfo.isCanStrangerNews) { showToast(I18n.of(context).stranger_close_tips); diff --git a/lib/home/ProgramDetail.dart b/lib/home/ProgramDetail.dart index 36ffc4e..5801ed4 100644 --- a/lib/home/ProgramDetail.dart +++ b/lib/home/ProgramDetail.dart @@ -119,7 +119,7 @@ class _ProgramDetailPageState extends State { 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 { 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, diff --git a/lib/home/SearchPage.dart b/lib/home/SearchPage.dart index e110fc1..85e39d6 100644 --- a/lib/home/SearchPage.dart +++ b/lib/home/SearchPage.dart @@ -175,7 +175,7 @@ class _SearchPageState extends State { child: Stack( children: [ SmartRefresher( - enablePullDown: list.length > 0, + enablePullDown: list.length > 0, enablePullUp: true, header: MaterialClassicHeader(), footer: CustomUI.buildLoadingFooter(), diff --git a/lib/home/create_group_view.dart b/lib/home/create_group_view.dart index ea157bf..1ae9c1d 100644 --- a/lib/home/create_group_view.dart +++ b/lib/home/create_group_view.dart @@ -510,7 +510,7 @@ class _CreateGroupPageState extends State { actions: [ InkWell( child: Padding( - padding: EdgeInsets.only(right: 12, top: 14, bottom: 14), + padding: EdgeInsets.only(right: 15, top: 14, bottom: 14), child: Consumer( builder: (context, counter, child) => Container( decoration: BoxDecoration( @@ -525,7 +525,7 @@ class _CreateGroupPageState extends State { ? Colors.red : const Color(0xFF3875E9)), ), - padding: EdgeInsets.symmetric(horizontal: 10), + padding: EdgeInsets.symmetric(horizontal: 18), alignment: Alignment.center, child: fixedText( (widget.pageType == diff --git a/lib/home/daily_bonus_page.dart b/lib/home/daily_bonus_page.dart index 8492317..d9c875d 100644 --- a/lib/home/daily_bonus_page.dart +++ b/lib/home/daily_bonus_page.dart @@ -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), diff --git a/lib/home/friend_page.dart b/lib/home/friend_page.dart index 7afc52f..c99ff4e 100644 --- a/lib/home/friend_page.dart +++ b/lib/home/friend_page.dart @@ -215,6 +215,10 @@ class _FriendPageState extends State { 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) { diff --git a/lib/home/homeMain.dart b/lib/home/homeMain.dart index bace6b7..6b32923 100644 --- a/lib/home/homeMain.dart +++ b/lib/home/homeMain.dart @@ -12,7 +12,7 @@ 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'; @@ -256,7 +256,7 @@ class _HomeMainState extends State { Navigator.of(LoadingManage.context).push( new MaterialPageRoute( builder: (context) { - return FileTransferPage(data); + return FilePreview(data); }, ), ); diff --git a/lib/home/last_chat_item.dart b/lib/home/last_chat_item.dart index 112d3ac..c9a1794 100644 --- a/lib/home/last_chat_item.dart +++ b/lib/home/last_chat_item.dart @@ -41,8 +41,6 @@ class _LastChatItemState extends State { lastMessageModel = widget.lastMessageModel; initUserInfo(); -// initUserInfo(); -// initUserInfo(); MessageMgr().on('UpdateUserInfo', msgUpdateUserInfo); } @@ -162,22 +160,5 @@ class _LastChatItemState extends State { 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(); - // } - // }); } } diff --git a/lib/home/last_chat_record_widget.dart b/lib/home/last_chat_record_widget.dart index 4babc33..b1e4e18 100644 --- a/lib/home/last_chat_record_widget.dart +++ b/lib/home/last_chat_record_widget.dart @@ -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}); diff --git a/lib/home/money_detail.dart b/lib/home/money_detail.dart index ff9d630..225bbe6 100644 --- a/lib/home/money_detail.dart +++ b/lib/home/money_detail.dart @@ -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'; diff --git a/lib/home/my_qr.dart b/lib/home/my_qr.dart index 4e0b7d5..03a4076 100644 --- a/lib/home/my_qr.dart +++ b/lib/home/my_qr.dart @@ -89,7 +89,7 @@ class MyQr extends StatelessWidget { children: [ Row( children: [ - Container( + Container( constraints: BoxConstraints(maxWidth: 170), child: Text(name, textScaleFactor: 1.0, diff --git a/lib/main.dart b/lib/main.dart index 39da0ac..ab5e00a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -236,11 +236,7 @@ class _MyAppState extends State with WidgetsBindingObserver { I18n.onLocaleChanged = onLocaleChange; WidgetsBinding.instance.addObserver(this); ReceiveShareFile.init(); - - - ScreenShot.getFileStream(); - - + ScreenShot.getFileStream(); } isAvailableAppleSignIn() async { @@ -294,9 +290,6 @@ class _MyAppState extends State with WidgetsBindingObserver { MessageMgr().emit( 'Receive AudioChat Request', MsgHandler.audioChatRequestFriendId); } - - - break; case AppLifecycleState.paused: // 应用程序不可见,后台 print('切换到后台'); diff --git a/lib/utils/ChargeMoney.dart b/lib/utils/ChargeMoney.dart index 9551063..5dc615a 100644 --- a/lib/utils/ChargeMoney.dart +++ b/lib/utils/ChargeMoney.dart @@ -219,7 +219,7 @@ class PayWayContentState extends State { 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); } diff --git a/lib/utils/CustomUI.dart b/lib/utils/CustomUI.dart index 08f1919..6de7748 100644 --- a/lib/utils/CustomUI.dart +++ b/lib/utils/CustomUI.dart @@ -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() { diff --git a/lib/utils/HttpUtil.dart b/lib/utils/HttpUtil.dart index 41070f2..dd9c819 100644 --- a/lib/utils/HttpUtil.dart +++ b/lib/utils/HttpUtil.dart @@ -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 commitInfoToCompany(MsgModel msgModel) async { Map data = { diff --git a/lib/utils/MessageBox.dart b/lib/utils/MessageBox.dart index 4360524..3864155 100644 --- a/lib/utils/MessageBox.dart +++ b/lib/utils/MessageBox.dart @@ -85,7 +85,7 @@ class _MessageBoxState extends State { ), ); } 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 { _buildTimebox(data), _buildImgSet(data), _buildImgList(data), - widget.isDetail ? Container() : _buildDivder(), + widget.isDetail ? Container() : _buildDivder(), _buildIconButtonList(data), //_buildContent(), ], diff --git a/lib/utils/NetUtil.dart b/lib/utils/NetUtil.dart index 32a8d0e..3978664 100644 --- a/lib/utils/NetUtil.dart +++ b/lib/utils/NetUtil.dart @@ -61,11 +61,9 @@ class NetWork { Timer heartTimer; Timer sendTimer; Timer connectServerTimer; //尝试连接服务器 - Timer loginTimer; //登录 - + Timer loginTimer; //登录计时器 // 计时器 Timer iosBgTimer; //登录计时器 - bool isInit = false; String host; @@ -82,6 +80,9 @@ class NetWork { HttpUtil().post('/service/config', data: data).then((res) { print('获取聊天服务器地址成功'); res = json.decode(res.toString()); + if (res == null) { + return; + } if (res['code'] == 0) { var config = res['data'][0]; @@ -304,43 +305,37 @@ class NetWork { } + reallySingOut() { + print('用户登出'); + //清缓存 - reallyClose() { + isNormalClose = true; + reallyClose(); + } - if(iosBgTimer==null){ - debugPrint('#### ios bg 没有计时器--计时器你启动'); - iosBgTimer = Timer(Duration(seconds: 20), () async{ - debugPrint('#### ios bg ios后台关闭socket连接'); - isNormalClose=true; - isConnecting = false; - isConnect = false; - isLogin = false; - heartOutCount = 0; - sendTimer?.cancel(); - heartTimer?.cancel(); + reallyClose() async{ + print('清除连接状态'); + isNormalClose=true; + isConnecting = false; + isConnect = false; + isLogin = false; + heartOutCount = 0; + sendTimer?.cancel(); + heartTimer?.cancel(); - loginTimer?.cancel(); - connectServerTimer?.cancel(); + loginTimer?.cancel(); + print('清除计时器'); + connectServerTimer?.cancel(); - if (channel != null) { - await channel.sink.close(); - channel = null; - } - }); - }else{ - debugPrint('#### ios bg 已有计时器'); + if (channel != null) { + var result = await channel.sink.close(); + print('result: $result'); + channel = null; } - - - - } checkConnect() { - debugPrint(' ios bg 取消计时器'); - iosBgTimer?.cancel(); - if (isInit && !isConnect && !isConnecting) { reconnect(); } else { diff --git a/lib/utils/TempUserCard.dart b/lib/utils/TempUserCard.dart index 1e78dd3..c435ae8 100644 --- a/lib/utils/TempUserCard.dart +++ b/lib/utils/TempUserCard.dart @@ -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: [ 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: [ 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: [ - SizedBox( - height: 23, - ), - headImg(), - Container( - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.only( - bottomLeft: Radius.circular(15), - bottomRight: Radius.circular(15))), - child: Column( - children: [ - Container( - //背景 - padding: EdgeInsets.only( - left: 15, right: 10, bottom: 14.5, top: 5), - child: Column( - children: [ - Stack( - children: [ - Row( - children: [ - //头像图片 - - //信息 - Container( - width: MediaQuery.of(context) - .size - .width - - 104, - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - mainAxisAlignment: - MainAxisAlignment.end, - children: [ - 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: [ - 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: [ + SizedBox(height: 23,), + headImg(), + + + Container(decoration: BoxDecoration(color: Colors.white,borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(15), + bottomRight: Radius.circular(15))) ,child: Column(children: [ + Container( + //背景 + padding: EdgeInsets.only(left: 15,right: 10, bottom: 14.5,top: 5), + child: Column(children: [ + Stack( + children: [ + Row( + children: [ + //头像图片 + + //信息 + Container( + width: MediaQuery.of(context).size.width - 104, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + 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: [ + 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 diff --git a/lib/utils/UserCard.dart b/lib/utils/UserCard.dart index 90eab15..51eb97f 100644 --- a/lib/utils/UserCard.dart +++ b/lib/utils/UserCard.dart @@ -277,13 +277,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 +344,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( diff --git a/lib/utils/app_navigator.dart b/lib/utils/app_navigator.dart index 041a561..7b6dfe1 100644 --- a/lib/utils/app_navigator.dart +++ b/lib/utils/app_navigator.dart @@ -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,23 +100,36 @@ 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, + )); } //客服 @@ -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 friendList) { AppNavigator.push( context, CreateGroupPage(GroupOperatingPageType.CreateGroup, [], null)); +} + + //发起群聊界面 + static pushForwardPage(BuildContext context, MsgModel msg) { + AppNavigator.push(context, ForwardPage(msg)); } } diff --git a/lib/utils/msgHandler.dart b/lib/utils/msgHandler.dart index 9358997..1064124 100644 --- a/lib/utils/msgHandler.dart +++ b/lib/utils/msgHandler.dart @@ -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) { diff --git a/lib/utils/receive_share_file.dart b/lib/utils/receive_share_file.dart index efa46a4..5c304c0 100644 --- a/lib/utils/receive_share_file.dart +++ b/lib/utils/receive_share_file.dart @@ -9,6 +9,8 @@ class ReceiveShareFile { static List _sharedFiles; static String tempFilePath; + static int mLastClickTime = 0; + static final int TIME_INTERVAL = 3000; static void init() { // For sharing images coming from outside the app while the app is in the memory @@ -21,8 +23,12 @@ 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 > TIME_INTERVAL) { + if (value != null && value.length > 0) { + MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path); + } } } else { // print("### 记录下来了1"); @@ -44,9 +50,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 > TIME_INTERVAL) { + // 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) { @@ -58,9 +69,11 @@ 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"); }); diff --git a/lib/utils/screen.dart b/lib/utils/screen.dart index fa12891..5ec556a 100644 --- a/lib/utils/screen.dart +++ b/lib/utils/screen.dart @@ -91,8 +91,3 @@ setStatusBar(){ systemNavigationBarColor: Colors.white, systemNavigationBarIconBrightness: Brightness.dark)); } - - -debugPrint(dynamic msg){ - print('###${DateTime.now()}####### '+msg); -} diff --git a/lib/utils/screen_shot.dart b/lib/utils/screen_shot.dart index 3d4a638..2ecf27d 100644 --- a/lib/utils/screen_shot.dart +++ b/lib/utils/screen_shot.dart @@ -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> takeScreenshotImage() async { Map args = {}; 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'); From cbbe455d5cc4899242eb707a63eea2e1ce54acf0 Mon Sep 17 00:00:00 2001 From: zcm <772112648@qq.com> Date: Mon, 16 Mar 2020 18:44:52 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug=E7=84=9A=E9=98=85?= =?UTF-8?q?=E7=85=A7=E7=89=87=E5=A2=9E=E5=8A=A0=E5=BC=B9=E6=A1=86=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 6 +- lib/home/InfoList.dart | 3 - lib/home/MoneyPageOld.dart | 1 - lib/home/ProfilePage.dart | 221 ++++++++--------------------------- lib/home/money_detail.dart | 1 - lib/utils/HttpUtil.dart | 18 ++- lib/utils/TempUserCard.dart | 1 - lib/utils/UserCard.dart | 1 - lib/utils/blacklist_mgr.dart | 3 - 9 files changed, 67 insertions(+), 188 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 73e1601..d004d6d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -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', diff --git a/lib/home/InfoList.dart b/lib/home/InfoList.dart index 7bb2823..d2b9d3d 100644 --- a/lib/home/InfoList.dart +++ b/lib/home/InfoList.dart @@ -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; diff --git a/lib/home/MoneyPageOld.dart b/lib/home/MoneyPageOld.dart index e42fe91..9fd1334 100644 --- a/lib/home/MoneyPageOld.dart +++ b/lib/home/MoneyPageOld.dart @@ -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'; diff --git a/lib/home/ProfilePage.dart b/lib/home/ProfilePage.dart index a4a805e..f6bde5b 100644 --- a/lib/home/ProfilePage.dart +++ b/lib/home/ProfilePage.dart @@ -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 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 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() {} @@ -2152,20 +2092,11 @@ class _ProfilePageState extends State 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 +2107,6 @@ class _ProfilePageState extends State : 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 +2163,6 @@ class _ProfilePageState extends State 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 @@ -2572,66 +2456,55 @@ class _ProfilePageState extends State ), ], ); + 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 + ? [_inviteFdBtn()] + : (widget.addMode == 2 + ? [_dealInvite()] + : [ + _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 - ? [_inviteFdBtn()] - : (widget.addMode == 2 - ? [_dealInvite()] - : [ - _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( diff --git a/lib/home/money_detail.dart b/lib/home/money_detail.dart index ff9d630..225bbe6 100644 --- a/lib/home/money_detail.dart +++ b/lib/home/money_detail.dart @@ -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'; diff --git a/lib/utils/HttpUtil.dart b/lib/utils/HttpUtil.dart index 41070f2..932f1e9 100644 --- a/lib/utils/HttpUtil.dart +++ b/lib/utils/HttpUtil.dart @@ -1366,7 +1366,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 +1387,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(); + } + } } diff --git a/lib/utils/TempUserCard.dart b/lib/utils/TempUserCard.dart index 1e78dd3..46be546 100644 --- a/lib/utils/TempUserCard.dart +++ b/lib/utils/TempUserCard.dart @@ -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'; import 'TempUserChips.dart'; class TempUserCard extends StatelessWidget { diff --git a/lib/utils/UserCard.dart b/lib/utils/UserCard.dart index 90eab15..76770ee 100644 --- a/lib/utils/UserCard.dart +++ b/lib/utils/UserCard.dart @@ -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; diff --git a/lib/utils/blacklist_mgr.dart b/lib/utils/blacklist_mgr.dart index cef6f1c..f92e9a2 100644 --- a/lib/utils/blacklist_mgr.dart +++ b/lib/utils/blacklist_mgr.dart @@ -1,6 +1,3 @@ -import 'package:chat/generated/i18n.dart'; -import 'package:chat/utils/LoadingDialog.dart'; -import 'package:oktoast/oktoast.dart'; class BlacklistMgr { //我拉黑的用户id From cae191fb4ddbe1b343d4e5f60caf77a991dd11dd Mon Sep 17 00:00:00 2001 From: ASxx <123456789@qq.com> Date: Mon, 16 Mar 2020 19:03:25 +0800 Subject: [PATCH 3/5] =?UTF-8?q?vscode=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/utils/TempUserCard.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/utils/TempUserCard.dart b/lib/utils/TempUserCard.dart index 6157039..8bf753d 100644 --- a/lib/utils/TempUserCard.dart +++ b/lib/utils/TempUserCard.dart @@ -13,6 +13,7 @@ import '../utils/HttpUtil.dart'; import 'package:dio/dio.dart'; import "../data/UserData.dart"; import 'TempUserChips.dart'; +import 'TokenMgr.dart'; class TempUserCard extends StatelessWidget { final String userName; From ad07df693f4c6cf4473f35db6f438c45fb27d68e Mon Sep 17 00:00:00 2001 From: ZCM <772112648@qq.com> Date: Mon, 16 Mar 2020 19:06:22 +0800 Subject: [PATCH 4/5] =?UTF-8?q?vscode=E6=8F=90=E4=BA=A4=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/home/add_friend.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/home/add_friend.dart b/lib/home/add_friend.dart index 78e9101..e9b7845 100644 --- a/lib/home/add_friend.dart +++ b/lib/home/add_friend.dart @@ -30,7 +30,7 @@ class _AddFriendPageState extends State { void initState() { super.initState(); - print('AddFriendPage init'); + print('AddFriendPage init111'); _txtCtrl.text = widget.originalName; } From ee3422a1fc8818fbf385e92d0ff6551b14b5094f Mon Sep 17 00:00:00 2001 From: kaciya Date: Tue, 17 Mar 2020 16:43:33 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E5=85=A8=E5=B1=8F=E6=98=BE=E7=A4=BA=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?context=E8=8E=B7=E5=8F=96=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org.eclipse.buildship.core.prefs | 2 + lib/chat/emoji_gif_text.dart | 4 +- lib/chat/full_img_view.dart | 118 +++++++----------- lib/chat/util_keyboard.dart | 47 +++---- lib/data/constants.dart | 10 ++ lib/home/IndexPage.dart | 3 +- lib/home/InformUser.dart | 6 +- lib/home/alter_select_view.dart | 10 -- lib/home/friend_page.dart | 19 ++- lib/home/homeMain.dart | 4 +- lib/home/qr_scanner_view.dart | 3 +- lib/home/service_view.dart | 4 +- lib/home/splash_page.dart | 7 +- lib/main.dart | 10 +- lib/map/google_map_location_picker.dart | 2 +- lib/map/search_input.dart | 2 +- lib/models/last_msg_description.dart | 23 ++-- .../ui/page/photo_folder_select_menu.dart | 13 -- lib/utils/HttpUtil.dart | 4 +- lib/utils/LoadingDialog.dart | 6 +- lib/utils/NetUtil.dart | 3 +- lib/utils/app_navigator.dart | 2 +- lib/utils/conversation_table.dart | 4 +- lib/utils/keyboard/bottom_area_avoider.dart | 4 +- lib/utils/receive_share_file.dart | 17 +-- lib/utils/upload_util.dart | 6 +- 26 files changed, 136 insertions(+), 197 deletions(-) create mode 100644 android/.settings/org.eclipse.buildship.core.prefs diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..e889521 --- /dev/null +++ b/android/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +connection.project.dir= +eclipse.preferences.version=1 diff --git a/lib/chat/emoji_gif_text.dart b/lib/chat/emoji_gif_text.dart index 3bd0ca8..f04d661 100644 --- a/lib/chat/emoji_gif_text.dart +++ b/lib/chat/emoji_gif_text.dart @@ -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]); diff --git a/lib/chat/full_img_view.dart b/lib/chat/full_img_view.dart index 141934d..ed6e04a 100644 --- a/lib/chat/full_img_view.dart +++ b/lib/chat/full_img_view.dart @@ -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 with SingleTickerProviderStateMixin { AnimationController _controller; - Animation _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 _controller = AnimationController(vsync: this); _controller.addListener(() { setState(() { - _offset = _animation.value; }); }); } @@ -59,75 +52,50 @@ class _PhotoPageState extends State 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( - 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: [ - Image( - fit: BoxFit.fitWidth, - image: provider ?? AssetImage(R.assetsImagesIcAlbum), - ), - + SingleChildScrollView( + child: Column( + children: [ + 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 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) { diff --git a/lib/chat/util_keyboard.dart b/lib/chat/util_keyboard.dart index ef4e6c7..f26a9ce 100644 --- a/lib/chat/util_keyboard.dart +++ b/lib/chat/util_keyboard.dart @@ -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 { + 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(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(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); } } @@ -284,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(context); } var msg = MsgHandler.createSendMsg(ChatType.ImageChatType, sendImg, @@ -292,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); } } @@ -309,7 +314,7 @@ class UtilKeyboard extends StatelessWidget { } int friendId = 0; - if (!isGroup) { + if (!widget.isGroup) { friendId = Provider.of(context); } @@ -332,9 +337,9 @@ class UtilKeyboard extends StatelessWidget { friendId: friendId, localFile: file.path, channelType: - isGroup ? ChatChannelType.Group : ChatChannelType.Session); + widget.isGroup ? ChatChannelType.Group : ChatChannelType.Session); - sendMsg(msg); + widget.sendMsg(msg); } @@ -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(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); } } diff --git a/lib/data/constants.dart b/lib/data/constants.dart index 3f67ccd..8cc703a 100644 --- a/lib/data/constants.dart +++ b/lib/data/constants.dart @@ -109,6 +109,16 @@ class Constants { ///ture 应用商店版本 false线下渠道 static const bool isStoreVersion = false; + //app全局key,处理content + static final GlobalKey navigatorKey = GlobalKey(); + + + /// 获取当前的state + static NavigatorState getCurrentState() => navigatorKey.currentState; + + /// 获取当前的context + static BuildContext getCurrentContext() => navigatorKey.currentContext; + ///在pubspec.yaml中修改版本号 static String versionName = '1.0.0'; diff --git a/lib/home/IndexPage.dart b/lib/home/IndexPage.dart index b7bd449..5d0f3d3 100644 --- a/lib/home/IndexPage.dart +++ b/lib/home/IndexPage.dart @@ -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 { return; } if (resData['data'] != null) { - HttpUtil().changePage(LoadingManage.context, resData); + HttpUtil().changePage(Constants.getCurrentContext(), resData); } } diff --git a/lib/home/InformUser.dart b/lib/home/InformUser.dart index b148482..10d8487 100644 --- a/lib/home/InformUser.dart +++ b/lib/home/InformUser.dart @@ -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 { 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 { List 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( diff --git a/lib/home/alter_select_view.dart b/lib/home/alter_select_view.dart index 6eee0fa..85f94c0 100644 --- a/lib/home/alter_select_view.dart +++ b/lib/home/alter_select_view.dart @@ -187,16 +187,6 @@ class _AlterSelectPageState extends State { } } - 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); diff --git a/lib/home/friend_page.dart b/lib/home/friend_page.dart index c99ff4e..9c08049 100644 --- a/lib/home/friend_page.dart +++ b/lib/home/friend_page.dart @@ -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 { 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 { 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(builder: (BuildContext context) { return ContactsPage(); })); @@ -259,7 +258,7 @@ class _FriendPageState extends State { 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, @@ -268,14 +267,14 @@ class _FriendPageState extends State { 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, @@ -303,7 +302,7 @@ class _FriendPageState extends State { 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, @@ -312,7 +311,7 @@ class _FriendPageState extends State { const Color(0xFF6118A6), ]), onPressed: () async { - Navigator.push(LoadingManage.context, + Navigator.push(Constants.getCurrentContext(), MaterialPageRoute(builder: (BuildContext context) { return SearchNewFriendsPage(); })); diff --git a/lib/home/homeMain.dart b/lib/home/homeMain.dart index 6b32923..d6dddf3 100644 --- a/lib/home/homeMain.dart +++ b/lib/home/homeMain.dart @@ -8,7 +8,6 @@ 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'; @@ -142,7 +141,6 @@ class _HomeMainState extends State { @override void initState() { - MsgHandler.context = context; SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light); super.initState(); @@ -253,7 +251,7 @@ class _HomeMainState extends State { goShareInfo(data) async { Future.delayed(Duration(milliseconds: 1000), () { - Navigator.of(LoadingManage.context).push( + Navigator.of(Constants.getCurrentContext()).push( new MaterialPageRoute( builder: (context) { return FilePreview(data); diff --git a/lib/home/qr_scanner_view.dart b/lib/home/qr_scanner_view.dart index 6772a6e..6bc8146 100644 --- a/lib/home/qr_scanner_view.dart +++ b/lib/home/qr_scanner_view.dart @@ -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 showToast(I18n.of(context).no_goupr_info); return; } - Navigator.push(LoadingManage.context, + Navigator.push(Constants.getCurrentContext(), MaterialPageRoute(builder: (BuildContext context) { return JoinGroupConfirmPage( groupInfoModel: groupInfo, diff --git a/lib/home/service_view.dart b/lib/home/service_view.dart index 3a36fa2..71a54c7 100644 --- a/lib/home/service_view.dart +++ b/lib/home/service_view.dart @@ -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(); diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index f69d124..d0cbd85 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -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 { 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( diff --git a/lib/main.dart b/lib/main.dart index ab5e00a..637c116 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -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 navigatorKey = new GlobalKey(); class _MyAppState extends State with WidgetsBindingObserver { final i18n = I18n.delegate; @@ -232,7 +230,6 @@ class _MyAppState extends State with WidgetsBindingObserver { initVersionName(); askLocationPermission(); - MsgHandler.context = context; I18n.onLocaleChanged = onLocaleChange; WidgetsBinding.instance.addObserver(this); ReceiveShareFile.init(); @@ -385,7 +382,7 @@ class _MyAppState extends State with WidgetsBindingObserver { // 此处 return 'Hibok'; }, - navigatorKey: navigatorKey, + navigatorKey: Constants.navigatorKey, routes: { '/main': (BuildContext context) => HomeMain(), }, @@ -410,8 +407,7 @@ class _MyAppState extends State with WidgetsBindingObserver { } goIndex() { - LoadingManage.context = navigatorKey.currentState.overlay.context; - + if (!isOpen) { return SplashPage(); } else { diff --git a/lib/map/google_map_location_picker.dart b/lib/map/google_map_location_picker.dart index c2740a2..7a35309 100644 --- a/lib/map/google_map_location_picker.dart +++ b/lib/map/google_map_location_picker.dart @@ -137,7 +137,7 @@ class LocationPickerState extends State { ), Expanded( child: Text( - "Finding place...", + "搜索中...", style: TextStyle( fontSize: 16, ), diff --git a/lib/map/search_input.dart b/lib/map/search_input.dart index 91a04c0..bfe0fb1 100644 --- a/lib/map/search_input.dart +++ b/lib/map/search_input.dart @@ -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, diff --git a/lib/models/last_msg_description.dart b/lib/models/last_msg_description.dart index 1b0f4bb..58385e3 100644 --- a/lib/models/last_msg_description.dart +++ b/lib/models/last_msg_description.dart @@ -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 { } 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 { 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 { 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; diff --git a/lib/photo/ui/page/photo_folder_select_menu.dart b/lib/photo/ui/page/photo_folder_select_menu.dart index 2050aab..e05152e 100644 --- a/lib/photo/ui/page/photo_folder_select_menu.dart +++ b/lib/photo/ui/page/photo_folder_select_menu.dart @@ -88,19 +88,6 @@ class _PhotoSelectMenuState extends State { 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(); diff --git a/lib/utils/HttpUtil.dart b/lib/utils/HttpUtil.dart index e667d5b..c976bd0 100644 --- a/lib/utils/HttpUtil.dart +++ b/lib/utils/HttpUtil.dart @@ -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; diff --git a/lib/utils/LoadingDialog.dart b/lib/utils/LoadingDialog.dart index afc0ebc..194721a 100644 --- a/lib/utils/LoadingDialog.dart +++ b/lib/utils/LoadingDialog.dart @@ -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(); } } diff --git a/lib/utils/NetUtil.dart b/lib/utils/NetUtil.dart index c7f4c3e..56e994c 100644 --- a/lib/utils/NetUtil.dart +++ b/lib/utils/NetUtil.dart @@ -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) { //用户登出,其他设备替换 diff --git a/lib/utils/app_navigator.dart b/lib/utils/app_navigator.dart index 7b6dfe1..c56822d 100644 --- a/lib/utils/app_navigator.dart +++ b/lib/utils/app_navigator.dart @@ -134,7 +134,7 @@ class AppNavigator { //客服 static pushServicePage(BuildContext context, {questionIndex = -1}) async { - AppNavigator.push(context, ServiceCenterPage(questionIndex)); + AppNavigator.push(context, ServiceCenterPage(questionIndex : questionIndex)); } //群成员列表 diff --git a/lib/utils/conversation_table.dart b/lib/utils/conversation_table.dart index f0ef076..9a8f30b 100644 --- a/lib/utils/conversation_table.dart +++ b/lib/utils/conversation_table.dart @@ -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(LoadingManage.context, listen: false) + refName = Provider.of(Constants.getCurrentContext(), listen: false) .getRefName(friendId, name); nameTag = getNameTag(); } diff --git a/lib/utils/keyboard/bottom_area_avoider.dart b/lib/utils/keyboard/bottom_area_avoider.dart index 49eaec3..4600742 100644 --- a/lib/utils/keyboard/bottom_area_avoider.dart +++ b/lib/utils/keyboard/bottom_area_avoider.dart @@ -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(); q.add(root); while (q.isNotEmpty) { - final node = q.removeFirst(); + final RenderObject node = q.removeFirst(); final config = SemanticsConfiguration(); node.describeSemanticsConfiguration(config); if (config.isFocused) { diff --git a/lib/utils/receive_share_file.dart b/lib/utils/receive_share_file.dart index 5c304c0..91248be 100644 --- a/lib/utils/receive_share_file.dart +++ b/lib/utils/receive_share_file.dart @@ -1,31 +1,23 @@ -import 'dart:async'; import 'package:receive_sharing_intent/receive_sharing_intent.dart'; import 'MessageMgr.dart'; class ReceiveShareFile { - static StreamSubscription _intentDataStreamSubscription; - static List _sharedFiles; static String tempFilePath; static int mLastClickTime = 0; - static final int TIME_INTERVAL = 3000; + 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 value) { -// setState(() { -// _sharedFiles = value; -// print("Shared:" + (_sharedFiles?.map((f) => f.path)?.join(",") ?? "")); -// }); -// print('#### getfilePath ${value[0].path}'); if (currentIndex == 1) { int nowTime = DateTime.now().millisecondsSinceEpoch; - if (nowTime - mLastClickTime > TIME_INTERVAL) { + if (nowTime - mLastClickTime > timeInterval) { if (value != null && value.length > 0) { MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path); } @@ -51,7 +43,7 @@ class ReceiveShareFile { if (currentIndex == 1) { int nowTime = DateTime.now().millisecondsSinceEpoch; - if (nowTime - mLastClickTime > TIME_INTERVAL) { + if (nowTime - mLastClickTime > timeInterval) { // do something if (value != null && value.length > 0) { MessageMgr().emit(MessageMgr.RECEIVE_THIRD_SHARE, value[0].path); @@ -67,7 +59,6 @@ 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 $value '); // setState(() { diff --git a/lib/utils/upload_util.dart b/lib/utils/upload_util.dart index be1beda..701a160 100644 --- a/lib/utils/upload_util.dart +++ b/lib/utils/upload_util.dart @@ -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()); } }