diff --git a/i18n/vi-VN.json b/i18n/vi-VN.json index b514a25..c2502f9 100644 --- a/i18n/vi-VN.json +++ b/i18n/vi-VN.json @@ -277,7 +277,7 @@ "program": "Chương trình", "select_program": "Vui lòng chọn quốc tịch", "healthy_exercise": "TDTT", - "night_party": "Tiệc đêm", + "night_party": "Tiệc tùng", "gourmet_party": "Tham ăn", "watch_movie": "Xem phim", "play_games": "Chơi game", @@ -464,7 +464,7 @@ "signed_up": "/s1 đã đăng ký tham gia chương trình của bạn", "favorite_user": "Người dùng bạn yêu thích /s1 đã đăng một tin hẹn hò, nhấp vào đây để xem", "favorite_user2": "Người dùng bạn yêu thích /s1 đã cập nhật hoạt động mới nhất, nhấp vào đây để xem", - "wallet_reminder": "Hãy chú ý ví của bạn", + "wallet_reminder": "Thông báo số dư ví", "paid_you": "/s1 đã thanh toán (/s2H coin) để xem ảnh phong bì của bạn", "paid_you2": "/s1 đã thanh toăn (/s2H coin) để xem album của bạn", "paid_you3": "/s1 đã trả tiền để mở khóa tất cả thông tin của bạn", @@ -754,7 +754,7 @@ "payment_successful": "Thanh toán thành công", "set_amount": "Cài đặt sô tiền rút", "enter_amount": "Vui lòng nhập số lượng xu H", - "can_withdraw": "Có thể rút tiền", + "can_withdraw": "Có thể rút", "language_set": "Cài đặt ngôn ngữ", "user_agreement": "Thỏa thuận người dùng", "renewal_fee": "Tiếp tục trả phí", @@ -1062,8 +1062,8 @@ "added_friends_tips": "Bạn cần gửi đơn xin xác thực và chờ đối phương thông qua", "group_chat_name": "Tên nhóm trò chuyện", "my_group_nickname_tips": "Tại đây bạn có thể đặt biệt hiệu của mình trong nhóm này, và biệt danh này chỉ được hiển thị trong nhóm này", - "man_gold": "Động thái nam thần", - "woman_gold": "Động thái nữ thần", + "man_gold": "Hoạt động của Crush", + "woman_gold": "Hoạt động của Crush", "choose_group_owner": "Chọn nhóm chủ mới", "group_announcement": "Thông báo nhóm", "chat_news": "Tin nhắn trò chuyện", @@ -1131,7 +1131,7 @@ "money_tips": "Bạn có thể mua H-coin bằng cách nạp tiền hoặc chuyển đổi, nhưng không thể rút tiền mặt.", "get_money_detail": "Thu nhập cụ thể", "hibok_money": "Thu nhập Hibok", - "charge_h": "Chuyển đổi H-coin", + "charge_h": "Đổi H-coin", "charge_tips": "Quy tắc rút tiền", "splash_tips1": "Định vị đa dạng", "splash_tips2": "Robot dịch", diff --git a/lib/chat/ChatPage.dart b/lib/chat/ChatPage.dart index f96acd0..ca2f534 100644 --- a/lib/chat/ChatPage.dart +++ b/lib/chat/ChatPage.dart @@ -4,7 +4,6 @@ import 'package:chat/data/translate_hk_data_mgr.dart'; import 'package:chat/home/audio_chat_view.dart'; import 'package:chat/utils/screen.dart'; import 'package:chat/utils/upload_util.dart'; -import 'package:chat/utils/white_opacity_anim.dart'; import 'package:fixnum/fixnum.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:chat/chat/translate_state.dart'; @@ -41,7 +40,8 @@ import 'package:flutter/services.dart'; import 'package:oktoast/oktoast.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; -import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; +import 'package:scroll_to_index/scroll_to_index.dart'; +//import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import '../r.dart'; import 'ChatPageItem.dart'; import 'input_bar.dart'; @@ -66,11 +66,6 @@ class ChatPage extends StatefulWidget { } class _ChatPageState extends State { - final ItemScrollController itemScrollController = ItemScrollController(); - final ItemPositionsListener itemPositionListener = - ItemPositionsListener.create(); - //ScrollController _scrollCtrl = ScrollController(); - MessageMgr msgMgr = MessageMgr(); UserInfo friendInfo; @@ -90,6 +85,8 @@ class _ChatPageState extends State { int jumpTime; + AutoScrollController controller; + bool hasChatPermission=false; @override @@ -110,13 +107,13 @@ class _ChatPageState extends State { super.dispose(); } - jumpToMsg(time) { - //var screenItemNums = itemPositionListener.itemPositions.value.length; + jumpToMsg(time) async { + hideKeyBoard(); int jumIndex = 0; jumpTime = time; for (int i = 0; i < msgList.length; i++) { if (time == msgList[i].time) { - jumIndex = i - 1; // - screenItemNums + 2; + jumIndex = i; break; } } @@ -126,10 +123,10 @@ class _ChatPageState extends State { if (jumIndex > msgList.length - 1) { jumIndex = msgList.length - 1; } - setState(() { - itemScrollController.scrollTo( - index: jumIndex, duration: new Duration(microseconds: 1)); - }); + await controller.scrollToIndex(jumIndex, + preferPosition: AutoScrollPosition.begin); + controller.highlight(jumIndex, + highlightDuration: new Duration(milliseconds: 100)); } @override @@ -139,6 +136,10 @@ class _ChatPageState extends State { getDefaultSetting(); getUserInfo(); + controller = AutoScrollController( + viewportBoundaryGetter: () => + Rect.fromLTRB(0, 0, 0, MediaQuery.of(context).padding.bottom), + axis: Axis.vertical); isTranslateButler = widget.isTranslateButler; ///todo 这里再判断是否还在服务时间 @@ -295,7 +296,7 @@ class _ChatPageState extends State { print('接收到的:${widget.enterContent}'); _sendFile(File(widget.enterContent)); - } else if (widget.enterType == 2) { + } else if (widget.enterType == 2 || widget.enterType == 3) { //转发消息 MsgModel originMsg = widget.enterContent; @@ -545,9 +546,7 @@ class _ChatPageState extends State { break; case 2: setState(() { - print('连麦关闭GGGGGGGG'); isActive = false; - isShowZoomButton=false; }); break; } @@ -728,21 +727,17 @@ class _ChatPageState extends State { )) : NotificationListener( child: Scrollbar( - child: ScrollablePositionedList.builder( + child: ListView.builder( + controller: controller, physics: new ClampingScrollPhysics(), itemCount: msgList.length, itemBuilder: _buildItem, - itemScrollController: itemScrollController, - itemPositionsListener: itemPositionListener, - //padding: EdgeInsets.all(8.0), + padding: EdgeInsets.symmetric(vertical: 8), reverse: true, - hitCallback: hideKeyBoard, + shrinkWrap: true, )), onNotification: (notification) { - if (notification is ScrollNotification) { - // var offset = notification.metrics.pixels; - // print('滚动事件 offset $offset'); - } + if (notification is ScrollNotification) {} return true; }, ), @@ -757,8 +752,10 @@ class _ChatPageState extends State { _keyboardIndexProvider.changeReadOnlyKey(true); } - sendMsg(MsgModel msg) { - + sendMsg(MsgModel msg) async { +// if(widget.isTranslateButler){ ///翻译管家聊天通道 +// msg.channelType = ChatChannelType.TransHK.value; +// } print('对方是否拉黑你 ${friendInfo.isBlackened}'); if (BlacklistMgr.isBlack(friendInfo.userId)) { @@ -775,7 +772,8 @@ class _ChatPageState extends State { MsgHandler.sendChatMsg(msg); if (mounted) { setState(() {}); - itemScrollController.jumpTo(index: 0); + await controller.scrollToIndex(0, + preferPosition: AutoScrollPosition.begin); } } @@ -811,6 +809,14 @@ class _ChatPageState extends State { SqlUtil().deleteSigleRecordWith(msg.sessionId, msg.time); } + Widget _wrapScrollTag({int index, Widget child}) => AutoScrollTag( + key: ValueKey(index), + controller: controller, + index: index, + child: child, + highlightColor: Colors.white.withOpacity(1), + ); + Widget _buildItem(BuildContext context, int index) { var lastMsgTime; if (index < msgList.length - 1) { @@ -818,26 +824,13 @@ class _ChatPageState extends State { } MsgModel msg = msgList[index]; - if (msg.time == jumpTime) { - return WhiteOpacityAnim( - key: Key(msg.time.toString()), + return _wrapScrollTag( + index: index, child: ChatPageItem( key: Key(msg.time.toString()), msg: msg, hideKeyboard: readOnly, friendInfo: friendInfo, - lastMsgTime: lastMsgTime), - animFinishCallback: () { - jumpTime = null; - }, - ); - } else { - return ChatPageItem( - key: Key(msg.time.toString()), - msg: msg, - hideKeyboard: readOnly, - friendInfo: friendInfo, - lastMsgTime: lastMsgTime); - } + lastMsgTime: lastMsgTime)); } } diff --git a/lib/chat/ChatPageItem.dart b/lib/chat/ChatPageItem.dart index 509db9c..9d3e849 100644 --- a/lib/chat/ChatPageItem.dart +++ b/lib/chat/ChatPageItem.dart @@ -190,7 +190,7 @@ class _ChatPageItemState extends State return Container( width: Screen.width, - margin: const EdgeInsets.symmetric(vertical: 18.0,horizontal: 8), + margin: const EdgeInsets.symmetric(vertical: 10.0,horizontal: 8), child: Column( children: [ showTime == null @@ -794,6 +794,7 @@ class _ChatPageItemState extends State child: item, actions: actions, onTap: () async { + MessageMgr().emit('Keyboard Hide'); if (isUrl) { if (await canLaunch(textList[curTextType])) { launch(textList[curTextType]); diff --git a/lib/chat/group_chat_item.dart b/lib/chat/group_chat_item.dart index 99252c0..451d994 100644 --- a/lib/chat/group_chat_item.dart +++ b/lib/chat/group_chat_item.dart @@ -189,7 +189,7 @@ class _GroupChatPageItemState extends State return Container( width: Screen.width, color: Colors.white.withOpacity(0), - margin: const EdgeInsets.symmetric(vertical: 10.0), + margin: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 8), child: Column( children: [ showTime == null @@ -712,6 +712,7 @@ class _GroupChatPageItemState extends State child: item, actions: actions, onTap: () async { + MessageMgr().emit('Keyboard Hide'); if (isUrl) { if (await canLaunch(textList[curTextType])) { launch(textList[curTextType]); diff --git a/lib/chat/group_chat_view.dart b/lib/chat/group_chat_view.dart index 5cceb18..3193d5b 100644 --- a/lib/chat/group_chat_view.dart +++ b/lib/chat/group_chat_view.dart @@ -30,7 +30,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:oktoast/oktoast.dart'; import 'package:provider/provider.dart'; -import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; +import 'package:scroll_to_index/scroll_to_index.dart'; import '../r.dart'; import 'input_bar.dart'; import 'package:chat/models/ref_name_provider.dart'; @@ -48,9 +48,7 @@ class GroupChatPage extends StatefulWidget { } class _GroupChatPageState extends State { - final ItemScrollController itemScrollController = ItemScrollController(); - final ItemPositionsListener itemPositionListener = - ItemPositionsListener.create(); + AutoScrollController controller; MessageMgr msgMgr = MessageMgr(); @@ -101,6 +99,11 @@ class _GroupChatPageState extends State { getDefaultSetting(); + controller = AutoScrollController( + viewportBoundaryGetter: () => + Rect.fromLTRB(0, 0, 0, MediaQuery.of(context).padding.bottom), + axis: Axis.vertical); + startTime = DateTime.now().millisecondsSinceEpoch ~/ 1000; unreadNums = ChatDataMgr() @@ -162,13 +165,13 @@ class _GroupChatPageState extends State { }); } - jumpToMsg(time) { - //var screenItemNums = itemPositionListener.itemPositions.value.length; - jumpTime = time; + jumpToMsg(time) async { + hideKeyBoard(); int jumIndex = 0; + jumpTime = time; for (int i = 0; i < msgList.length; i++) { if (time == msgList[i].time) { - jumIndex = i - 1; // - screenItemNums + 2; + jumIndex = i; break; } } @@ -178,8 +181,10 @@ class _GroupChatPageState extends State { if (jumIndex > msgList.length - 1) { jumIndex = msgList.length - 1; } - itemScrollController.scrollTo( - index: jumIndex, duration: new Duration(microseconds: 1)); + await controller.scrollToIndex(jumIndex, + preferPosition: AutoScrollPosition.begin); + controller.highlight(jumIndex, + highlightDuration: new Duration(milliseconds: 500)); } void _sendFile(File file) async { @@ -490,19 +495,26 @@ class _GroupChatPageState extends State { style: TextStyle(color: Colors.grey), )) : Scrollbar( - child: ScrollablePositionedList.builder( + child: ListView.builder( + controller: controller, physics: new ClampingScrollPhysics(), itemCount: msgList.length, itemBuilder: _buildItem, - itemScrollController: itemScrollController, - itemPositionsListener: itemPositionListener, - padding: EdgeInsets.all(8.0), + padding: EdgeInsets.symmetric(vertical: 8), reverse: true, - hitCallback: hideKeyBoard, + shrinkWrap: true, )), ); } + Widget _wrapScrollTag({int index, Widget child}) => AutoScrollTag( + key: ValueKey(index), + controller: controller, + index: index, + child: child, + highlightColor: Colors.white.withOpacity(1), + ); + hideKeyBoard() { _keyboardIndexProvider.changeSelectIndex(-1); } @@ -511,7 +523,7 @@ class _GroupChatPageState extends State { _keyboardIndexProvider.changeReadOnlyKey(true); } - sendMsg(MsgModel msg) { + sendMsg(MsgModel msg) async { if (!widget.groupInfoModel.isInGroup) { //如果不在该群 showToast(I18n.of(context).not_in_group); @@ -521,9 +533,9 @@ class _GroupChatPageState extends State { MsgHandler.insertMsgToDB(msg); MsgHandler.sendChatMsg(msg); if (mounted) { - setState(() { - itemScrollController.jumpTo(index: 0); - }); + setState(() {}); + await controller.scrollToIndex(0, + preferPosition: AutoScrollPosition.begin); } } @@ -583,16 +595,7 @@ class _GroupChatPageState extends State { hideKeyboard: readOnly, lastMsgTime: lastMsgTime); } - if (msg.time == jumpTime) { - result = WhiteOpacityAnim( - key: Key(msg.time.toString()), - child: result, - animFinishCallback: () { - jumpTime = null; - }, - ); - } - return result; + return _wrapScrollTag(index: index, child: result); } quiteGroup() { diff --git a/lib/chat/input_bar.dart b/lib/chat/input_bar.dart index ba9e1a7..14ae663 100644 --- a/lib/chat/input_bar.dart +++ b/lib/chat/input_bar.dart @@ -865,7 +865,7 @@ class InputBarState extends State refMsg: refMsg, refShortTxt: _getRefShortText(), altUsers: alterUsers, - channelType: channelType); + channelType: channelType); widget.sendMsg(msg); diff --git a/lib/generated/i18n.dart b/lib/generated/i18n.dart index 723618b..ee33eb1 100644 --- a/lib/generated/i18n.dart +++ b/lib/generated/i18n.dart @@ -3361,9 +3361,9 @@ class _I18n_vi_VN extends I18n { /// "TDTT" @override String get healthy_exercise => "TDTT"; - /// "Tiệc đêm" + /// "Tiệc tùng" @override - String get night_party => "Tiệc đêm"; + String get night_party => "Tiệc tùng"; /// "Tham ăn" @override String get gourmet_party => "Tham ăn"; @@ -3922,9 +3922,9 @@ class _I18n_vi_VN extends I18n { /// "Người dùng bạn yêu thích /s1 đã cập nhật hoạt động mới nhất, nhấp vào đây để xem" @override String get favorite_user2 => "Người dùng bạn yêu thích /s1 đã cập nhật hoạt động mới nhất, nhấp vào đây để xem"; - /// "Hãy chú ý ví của bạn" + /// "Thông báo số dư ví" @override - String get wallet_reminder => "Hãy chú ý ví của bạn"; + String get wallet_reminder => "Thông báo số dư ví"; /// "/s1 đã thanh toán (/s2H coin) để xem ảnh phong bì của bạn" @override String get paid_you => "/s1 đã thanh toán (/s2H coin) để xem ảnh phong bì của bạn"; @@ -4792,9 +4792,9 @@ class _I18n_vi_VN extends I18n { /// "Vui lòng nhập số lượng xu H" @override String get enter_amount => "Vui lòng nhập số lượng xu H"; - /// "Có thể rút tiền" + /// "Có thể rút" @override - String get can_withdraw => "Có thể rút tiền"; + String get can_withdraw => "Có thể rút"; /// "Cài đặt ngôn ngữ" @override String get language_set => "Cài đặt ngôn ngữ"; @@ -5716,12 +5716,12 @@ class _I18n_vi_VN extends I18n { /// "Tại đây bạn có thể đặt biệt hiệu của mình trong nhóm này, và biệt danh này chỉ được hiển thị trong nhóm này" @override String get my_group_nickname_tips => "Tại đây bạn có thể đặt biệt hiệu của mình trong nhóm này, và biệt danh này chỉ được hiển thị trong nhóm này"; - /// "Động thái nam thần" + /// "Hoạt động của Crush" @override - String get man_gold => "Động thái nam thần"; - /// "Động thái nữ thần" + String get man_gold => "Hoạt động của Crush"; + /// "Hoạt động của Crush" @override - String get woman_gold => "Động thái nữ thần"; + String get woman_gold => "Hoạt động của Crush"; /// "Chọn nhóm chủ mới" @override String get choose_group_owner => "Chọn nhóm chủ mới"; @@ -5923,9 +5923,9 @@ class _I18n_vi_VN extends I18n { /// "Thu nhập Hibok" @override String get hibok_money => "Thu nhập Hibok"; - /// "Chuyển đổi H-coin" + /// "Đổi H-coin" @override - String get charge_h => "Chuyển đổi H-coin"; + String get charge_h => "Đổi H-coin"; /// "Quy tắc rút tiền" @override String get charge_tips => "Quy tắc rút tiền"; diff --git a/lib/home/ProfilePage.dart b/lib/home/ProfilePage.dart index 3d96bfa..c5adf24 100644 --- a/lib/home/ProfilePage.dart +++ b/lib/home/ProfilePage.dart @@ -3,9 +3,11 @@ import 'dart:io'; import 'package:chat/home/fans_page.dart'; import 'package:chat/home/goddess_hot.dart'; import 'package:chat/home/rich_title.dart'; +import 'package:chat/models/ChatMsg.dart'; import 'package:chat/models/money_change.dart'; import 'package:chat/models/ref_name_provider.dart'; import 'package:chat/models/voucher_change.dart'; +import 'package:chat/proto/all.pbserver.dart'; import 'package:chat/utils/ChargeMoney.dart'; import 'package:chat/utils/app_navigator.dart'; import 'package:chat/utils/blacklist_mgr.dart'; @@ -429,7 +431,6 @@ class _ProfilePageState extends State // } // } - List resultList = List(); resultList = await MultiImagePicker.pickImages( @@ -452,7 +453,9 @@ class _ProfilePageState extends State Asset photoEntity = resultList[i]; print('名字:${photoEntity.name}'); ByteData byteData = await photoEntity.getByteData(); - File file = await FileCacheMgr().writeFile('temp-photo-${DateTime.now().millisecondsSinceEpoch}-${photoEntity.name}', byteData.buffer.asInt8List(0)); + File file = await FileCacheMgr().writeFile( + 'temp-photo-${DateTime.now().millisecondsSinceEpoch}-${photoEntity.name}', + byteData.buffer.asInt8List(0)); fileList.add(file); } @@ -469,7 +472,7 @@ class _ProfilePageState extends State if (resData['data']['msg'] != '' && resData['data']['msg'] != null) { showToast(resData['data']['msg']); } - if(resData['msg'].split('|').length !=fileList.length){ + if (resData['msg'].split('|').length != fileList.length) { showToast(I18n.of(context).hava_error_photo); } MessageMgr().emit('refresh_photo'); @@ -1627,6 +1630,20 @@ class _ProfilePageState extends State MessageMgr().emit('do_friend_apply', {'userId': userInfo.userId, 'state': 1}); MessageMgr().emit('Add friend'); + + //同意好友后发送打招呼 + MsgModel msgModel = MsgHandler.createSendMsg( + ChatType.TextChatType, '现在我们可以开始聊天了。', + friendId: userInfo.userId, + refMsg: null, + refShortTxt: null, + altUsers: null, + channelType: ChatChannelType.Session); + int sessionId = UserData().getSessionId(userInfo.userId); + MsgHandler.updateActiveSesstion(sessionId); + + AppNavigator.pushChatPage(context, userInfo.userId, + enterType: 3, enterContent: msgModel); }); }, child: Container( @@ -1690,7 +1707,10 @@ class _ProfilePageState extends State ? BoxDecoration(border: Border(bottom: Constants.GreyBorderSide)) : null, alignment: Alignment.center, - padding: EdgeInsets.only(top: 17,bottom: 17,), + padding: EdgeInsets.only( + top: 17, + bottom: 17, + ), margin: EdgeInsets.only(left: 20, bottom: 0, right: 10), child: Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -1711,7 +1731,6 @@ class _ProfilePageState extends State )); } - testChatPermission(callback) { becomeVip() { Navigator.of(context).push( @@ -1762,7 +1781,9 @@ class _ProfilePageState extends State // } //自己是女性,且未认证,提示去认证(好友除外) - if (!UserData().isMan() && !UserData().basicInfo.isAttestation && !FriendListMgr().isMyFriend(userInfo.userId)){ + if (!UserData().isMan() && + !UserData().basicInfo.isAttestation && + !FriendListMgr().isMyFriend(userInfo.userId)) { CustomUI.buildNotTrue(context); return; } @@ -2353,12 +2374,12 @@ class _ProfilePageState extends State return AddFriendPage( userId: userInfo.userId, pageType: - SendMessagePageType.Remark, + SendMessagePageType.Remark, originalName: Provider.of< - RefNameProvider>( - context) + RefNameProvider>( + context) .getRefName(userInfo.userId, - userInfo.nickName)); + userInfo.nickName)); }, ), ); @@ -2422,8 +2443,6 @@ class _ProfilePageState extends State fontSize: 18, color: Constants .BlackTextColor)))), - - ], ), ), diff --git a/lib/home/homeMain.dart b/lib/home/homeMain.dart index 5c7c622..e6fafac 100644 --- a/lib/home/homeMain.dart +++ b/lib/home/homeMain.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:chat/chat/ChatPage.dart'; import 'package:chat/data/UserData.dart'; +import 'package:chat/data/chat_data_mgr.dart'; import 'package:chat/data/constants.dart'; import 'package:chat/data/translate_hk_data_mgr.dart'; import 'package:chat/generated/i18n.dart'; @@ -8,8 +9,10 @@ import 'package:chat/home/SystemEditPage.dart'; import 'package:chat/home/find_page.dart'; import 'package:chat/home/realtimehelper/real_time_helper_page.dart'; import 'package:chat/home/unread_dot_widget.dart'; +import 'package:chat/models/ChatMsg.dart'; import 'package:chat/models/UserInfo.dart'; import 'package:chat/models/ref_name_provider.dart'; +import 'package:chat/proto/all.pbserver.dart'; import 'package:chat/utils/CustomUI.dart'; import 'package:chat/utils/HttpUtil.dart'; import 'package:chat/utils/MessageMgr.dart'; @@ -127,11 +130,11 @@ class NavigationIconView { color: isCenter ? Colors.white : Constants.BottomIconGreyColor)) - // child: Icon(icon, - // size: iconSize, - // color: isCenter - // ? Colors.white - // : Constants.BottomIconGreyColor)) + // child: Icon(icon, + // size: iconSize, + // color: isCenter + // ? Colors.white + // : Constants.BottomIconGreyColor)) ], )); } @@ -151,7 +154,6 @@ class _HomeMainState extends State { @override void initState() { - SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light); super.initState(); LocalNotificationUtil.instance.initState(context); @@ -164,7 +166,8 @@ class _HomeMainState extends State { MessageMgr().on('Show My Profile', showMyProfile); MessageMgr().on('test_Permission', msgTestPermission); MessageMgr().on(MessageMgr.RECEIVE_THIRD_SHARE, goShareInfo); - MessageMgr().on(MessageMgr.TRANSLATE_HK_RECEIVE_ORDER, receiveTranslateOrder); + MessageMgr() + .on(MessageMgr.TRANSLATE_HK_RECEIVE_ORDER, receiveTranslateOrder); MessageMgr().on(MessageMgr.TRANSLATE_HK_START_CHAT, startTranslateHKChat); ///初始化语音播放是外放还是听筒-默认外放 @@ -254,7 +257,8 @@ class _HomeMainState extends State { MessageMgr().off('Show My Profile', showMyProfile); MessageMgr().off('test_Permission', msgTestPermission); MessageMgr().off(MessageMgr.RECEIVE_THIRD_SHARE, goShareInfo); - MessageMgr().off(MessageMgr.TRANSLATE_HK_RECEIVE_ORDER, receiveTranslateOrder); + MessageMgr() + .off(MessageMgr.TRANSLATE_HK_RECEIVE_ORDER, receiveTranslateOrder); MessageMgr().off(MessageMgr.TRANSLATE_HK_START_CHAT, startTranslateHKChat); LocalNotificationUtil.instance.dispose(); if (time != null) { @@ -316,7 +320,6 @@ class _HomeMainState extends State { } - msgTestPermission(data) async { PermissionStatus status = await LocationPermissions().checkPermissionStatus(); @@ -476,8 +479,6 @@ class _HomeMainState extends State { // userId: UserData().basicInfo.userId, // ), // ]; - - } @override diff --git a/lib/models/unread_count_provider.dart b/lib/models/unread_count_provider.dart index 01bb242..74017c8 100644 --- a/lib/models/unread_count_provider.dart +++ b/lib/models/unread_count_provider.dart @@ -21,7 +21,7 @@ class UnreadCountProvider { } setAlterMe(int sessionId, int time) { - isHaveAlterme[sessionId] = time; + if (isHaveAlterme[sessionId] == null) isHaveAlterme[sessionId] = time; } clear() { diff --git a/lib/utils/msgHandler.dart b/lib/utils/msgHandler.dart index 856421d..4871b4d 100644 --- a/lib/utils/msgHandler.dart +++ b/lib/utils/msgHandler.dart @@ -243,7 +243,6 @@ class MsgHandler { seq.targetId = curActiveSession; if (curActiveSession == 10000) { - seq.channelType = ChatChannelType.CSD; } else { seq.channelType = @@ -253,17 +252,17 @@ class MsgHandler { NetWork().sendMsg(ComId.Chat, 5, seq); } - static int tempGroupId=0; + static int tempGroupId = 0; static int mLastClickTime = 0; static int timeInterval = 2500; // static int receivedCount=0; static handlerReceiveMsg(PushChat chat) async { bool isGroup = false; - bool isTranslateHK= false; + bool isTranslateHK = false; if (chat.channelType == ChatChannelType.Group) { print('群聊消息'); isGroup = true; - }else if (chat.channelType == ChatChannelType.TransHK) { + } else if (chat.channelType == ChatChannelType.TransHK) { print('聊天管家消息'); isTranslateHK = true; } @@ -411,8 +410,7 @@ class MsgHandler { chat.contentBuff, chat.sendTime.toInt(), chat.targetId, channelType: ChatChannelType.Group.value); } - } - else if(isTranslateHK){ + } else if (isTranslateHK) { var myId = UserData().basicInfo.userId; TransHKChatNotice notice = TransHKChatNotice.fromBuffer(chat.contentBuff); BaseUserInfo friendId ; @@ -452,8 +450,8 @@ class MsgHandler { print('chat.contentBuff cccc'); MessageMgr().emit(MessageMgr.TRANSLATE_HK_END_CHAT, friendId.id); } - - }else{//私聊通知消息 + } else { + //私聊通知消息 if (chat.cType == ChatType.RedWalletChatType) { //系统红包通知消息 RedWallet wallet = RedWallet.fromBuffer(chat.contentBuff); @@ -478,11 +476,8 @@ class MsgHandler { print('未知私聊通知消息'); } } - } else { //聊天消息 - - - - + } else { + //聊天消息 int sessionId = chat.targetId; print('sessionId $sessionId'); @@ -494,12 +489,12 @@ class MsgHandler { if (groupInfo != null) { showGroup = groupInfo.messageFree == 0; } - if (showGroup ) { - - + if (showGroup) { int nowTime = DateTime.now().millisecondsSinceEpoch; - if (nowTime - mLastClickTime < timeInterval && tempGroupId==sessionId) { //2秒内同一群不重复弹出 + if (nowTime - mLastClickTime < timeInterval && + tempGroupId == sessionId) { + //2秒内同一群不重复弹出 return; } @@ -526,8 +521,6 @@ class MsgHandler { // print('当前收到消息条数$receivedCount $content'); // } - - if (chat.hasTencentTranslate()) { msgModel.translateContent = chat.tencentTranslate; } @@ -562,7 +555,9 @@ class MsgHandler { for (var i = 0; i < msgModel.altUsers.length; i++) { if (msgModel.altUsers[i] == myId && curActiveSession != sessionId) { print('有人@了你'); - ChatDataMgr().groupUnreadProvider.setAlterMe(sessionId,msgModel.time); + ChatDataMgr() + .groupUnreadProvider + .setAlterMe(sessionId, msgModel.time); //to do } } @@ -587,7 +582,8 @@ class MsgHandler { print('消息为空,无法保存'); return; } - print('收到消息,准备保存 会话Id:${msgModel.sessionId} friendId: ${msgModel.friendId} ChatType: ${msgModel.channelType}'); + print( + '收到消息,准备保存 会话Id:${msgModel.sessionId} friendId: ${msgModel.friendId} ChatType: ${msgModel.channelType}'); ChatDataMgr().saveMsg(msgModel); if (msgModel.msgType == ChatType.ShortVoiceChatType.value) { //如果是语音消息,自动下载 @@ -606,11 +602,10 @@ class MsgHandler { } } - if (msgModel.sessionId == 10000 ) { - print('收到反馈小助手消息'); - } + if (msgModel.sessionId == 10000) { + print('收到反馈小助手消息'); + } if (msgModel.sessionId == curActiveSession) { - MessageMgr().emit('New Chat Message', msgModel.sessionId); } } @@ -643,7 +638,6 @@ class MsgHandler { switch (notice.changeType) { case GroupChangeType.AddMember: - if (optId.id == myId) { var otherNames = ''; for (var i = 0; i < optedIds.length; i++) { @@ -967,21 +961,19 @@ class MsgHandler { handlerAgreeMember(content); } else if (msgId == 228) { handlerUpdateMemberMsgFree(content); - }else if (msgId == 230) { + } else if (msgId == 230) { handlerGroupIsShowMenberNiceName(content); } break; - case ComId.TranslateOrder: - - if(msgId==2){ + if (msgId == 2) { handlerCreateTranslateOrder(content); - }else if(msgId ==4){ + } else if (msgId == 4) { handlerReceiveOrder(content); - }else if(msgId ==6){ + } else if (msgId == 6) { handlerCancelTranslateOrder(content); - }else if(msgId==20){ + } else if (msgId == 20) { handlerDeliveryInterpreterOrderPush(content); }else if(msgId==21){ handlerCancellationTransHKOrderPush(content); @@ -1267,27 +1259,24 @@ class MsgHandler { NetWork().sendMsg(ComId.Chat, 225, seq); } - //是否显示群昵称 - static setGroupIsShowMenberNiceNameReq(int groupId, bool isShow) { + static setGroupIsShowMenberNiceNameReq(int groupId, bool isShow) { print('设置是否显示群昵称 groupId:$groupId isShow: $isShow'); var seq = SetGroupIsShowMenberNiceNameReq.create(); seq.groupId = groupId; - seq.isShowMenberNiceName=isShow; + seq.isShowMenberNiceName = isShow; NetWork().sendMsg(ComId.Chat, 229, seq); } - - //发布翻译管家帮助订单 static sendCreateTranslateOrder(int fromLanguage,int toLanguage,int scences,String extraDesc) { TranslateHKMgr().isUser=true; debugPrint('发布翻译管家帮助订单 fromLanguage:$fromLanguage toLanguage: $toLanguage | ${fromLanguage|toLanguage}' ); var seq = IssueTransHKOrderReq.create(); - seq.tLanguage = fromLanguage|toLanguage; - seq.scenes =scences; + seq.tLanguage = fromLanguage | toLanguage; + seq.scenes = scences; seq.desc = extraDesc; NetWork().sendMsg(ComId.TranslateOrder, 1, seq); } @@ -1300,7 +1289,7 @@ class MsgHandler { if (res.errorCode == 0) { TranslateHKMgr().orderId = res.orderId; TranslateHKMgr().waitNum = res.waitNum; - TranslateHKMgr().orderStatus=TranslateHKMgr.ORDER_STATUS_WAITING; + TranslateHKMgr().orderStatus = TranslateHKMgr.ORDER_STATUS_WAITING; MessageMgr().emit(MessageMgr.TRANSLATE_HK_REFRESH_ORDER); // GroupInfoMgr().updateMemberMsgFree(res.groupId, res.messageFree); debugPrint('发布翻译管家帮助订单回应-订单号: ${res.orderId} 等待人数 ${res.waitNum}'); @@ -1337,10 +1326,8 @@ class MsgHandler { //撤销订单消息 - static sendCancelTranslateOrder( ) { - - - debugPrint('取消订单 orderid:${TranslateHKMgr().orderId}' ); + static sendCancelTranslateOrder() { + debugPrint('取消订单 orderid:${TranslateHKMgr().orderId}'); var seq = CancellationTransHKOrderReq.create(); seq.orderId = TranslateHKMgr().orderId; @@ -1352,7 +1339,6 @@ class MsgHandler { debugPrint('撤销订单消息回应'); var res = CancellationTransHKOrderRes.fromBuffer(msgContent); if (res.errorCode == 0) { - debugPrint('撤销订单消息回应成功: ${res.orderId}'); } else { debugPrint('撤销订单消息回应成功失败${res.errorCode}'); @@ -1363,7 +1349,8 @@ class MsgHandler { static handlerDeliveryInterpreterOrderPush(List msgContent) { debugPrint('派送订单推送'); var res = DeliveryTransHKOrderPush.fromBuffer(msgContent); - print('OrderId: ${res.orderId} createTime: ${res.createTime} tLanguage:${res.tLanguage} scenes:${res.scenes} desc${res.desc}'); + print( + 'OrderId: ${res.orderId} createTime: ${res.createTime} tLanguage:${res.tLanguage} scenes:${res.scenes} desc${res.desc}'); TranslateOrder order = new TranslateOrder(); order.orderId=res.orderId; @@ -1392,13 +1379,13 @@ class MsgHandler { //接收订单请求 - static sendReceiveOrder( ) { + static sendReceiveOrder() { TranslateOrder order = TranslateHKMgr().order; - debugPrint('接收订单消息请求 orderId:${order.orderId}' ); + debugPrint('接收订单消息请求 orderId:${order.orderId}'); var seq = ReceivingTransHKOrderReq.create(); seq.orderId = order.orderId; - NetWork().sendMsg(ComId.TranslateOrder,3, seq); + NetWork().sendMsg(ComId.TranslateOrder, 3, seq); } //接收订单消息回应 @@ -1406,7 +1393,6 @@ class MsgHandler { debugPrint('接收订单消息回应'); var res = ReceivingTransHKOrderRes.fromBuffer(msgContent); if (res.errorCode == 0) { - // GroupInfoMgr().updateMemberMsgFree(res.groupId, res.messageFree); debugPrint('接收订单消息回应成功: '); } else { @@ -1456,8 +1442,6 @@ class MsgHandler { } } - - //消息免打扰请求结果 static handlerUpdateMemberMsgFree(List msgContent) { print('消息免打扰请求结果'); @@ -1470,8 +1454,6 @@ class MsgHandler { } } - - //群主批准其他人加入群结果 static handlerAgreeMember(List msgContent) { print('群主批准其他人加入群结果'); @@ -1498,8 +1480,6 @@ class MsgHandler { NetWork().sendMsg(ComId.Chat, 227, seq); } - - //请求群列表求结果 static handlerGetGroupListRes(List msgContent) async { var res = QueryUserRelationGroupRes.fromBuffer(msgContent); diff --git a/pubspec.lock b/pubspec.lock index 40911db..55ac707 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -923,15 +923,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "0.22.6" - scrollable_positioned_list: + scroll_to_index: dependency: "direct main" description: - path: "." - ref: HEAD - resolved-ref: "6ac696b0550694de0eac3f4c30956e21a6dad748" - url: "https://github.com/KerwinZheng/scrollable_positioned_list.git" - source: git - version: "0.1.2" + name: scroll_to_index + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.6" share: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 9dc07ae..595fcf7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -177,10 +177,10 @@ dependencies: share_extend: ^1.1.1 #多图片选择 multi_image_picker: ^4.6.4 - scrollable_positioned_list: - git: https://github.com/KerwinZheng/scrollable_positioned_list.git #设备信息 device_info: ^0.4.2+1 + #跳转到指定索引 + scroll_to_index: any dev_dependencies: flutter_test: