From 5d11bb546f7115bf4bbdd63ef832af892fc2eddf Mon Sep 17 00:00:00 2001 From: kaciya Date: Mon, 16 Mar 2020 17:31:55 +0800 Subject: [PATCH] =?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');