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