diff --git a/lib/models/websocket_model.dart b/lib/models/websocket_model.dart index 8980864..7d6d2f0 100644 --- a/lib/models/websocket_model.dart +++ b/lib/models/websocket_model.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'dart:convert'; import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; import 'package:hive_flutter/hive_flutter.dart'; import 'package:web_socket_channel/web_socket_channel.dart'; import 'package:web_socket_channel/status.dart' as status; diff --git a/lib/screens/chat/chat_screen.dart b/lib/screens/chat/chat_screen.dart index 9f10dd2..b647281 100755 --- a/lib/screens/chat/chat_screen.dart +++ b/lib/screens/chat/chat_screen.dart @@ -75,9 +75,11 @@ class _ChatScreenState extends State with GetItStateMixin { Future _getUnreceivedMsg(String userId) async { print('触发了获取信息事件..................'); final res = await getUnreceivedMsg(userId); + print(res); if (res['code'] == 10900) { - for (var msg in res['data'] as List>) { + + for (var msg in res['data']) { if (msg['event'] == 'friend-chat-msg') { receiveFriendMsg(msg, false); } else if (msg['event'] == 'group-chat-msg') { @@ -170,12 +172,13 @@ class _ChatScreenState extends State with GetItStateMixin { ); return socketStatus == SocketStatus.reconnecting; }); + } - SocketStatus socketStatus = - get().socketStatus; - if (socketStatus == SocketStatus.connected) { - await _getUnreceivedMsg(userId); - } + socketStatus = + get().socketStatus; + + if (socketStatus == SocketStatus.connected) { + await _getUnreceivedMsg(userId); } }, child: ValueListenableBuilder( diff --git a/lib/screens/chat/components/group_chat_chat_tile.dart b/lib/screens/chat/components/group_chat_chat_tile.dart index f41fd33..25cddac 100755 --- a/lib/screens/chat/components/group_chat_chat_tile.dart +++ b/lib/screens/chat/components/group_chat_chat_tile.dart @@ -36,6 +36,11 @@ class GroupChatChatTile extends StatefulWidget { } class _GroupChatChatTileState extends State { + @override + void initState() { + super.initState(); + } + @override Widget build(BuildContext context) { Box chatSettingBox = Hive.box('chat_setting'); diff --git a/lib/screens/message/components/attachment_container.dart b/lib/screens/message/components/attachment_container.dart index 4a27462..40efd49 100644 --- a/lib/screens/message/components/attachment_container.dart +++ b/lib/screens/message/components/attachment_container.dart @@ -84,7 +84,7 @@ class _AttachmentContainerState extends State ? Image.file(File(filePath)) : Image.asset('assets/images/loading.gif'), ), - if (progress < 1) + if (progress < 1.0) Positioned.fill( child: Stack( alignment: Alignment.center, diff --git a/lib/screens/message/components/friend_message_bubble.dart b/lib/screens/message/components/friend_message_bubble.dart index f32a7b0..f4fb4d1 100644 --- a/lib/screens/message/components/friend_message_bubble.dart +++ b/lib/screens/message/components/friend_message_bubble.dart @@ -40,6 +40,7 @@ class FriendMessageBubble extends StatefulWidget { class _FriendMessageBubbleState extends State { // add late here so you can access widget instance late bool _isHideMsg; + Timer? _timer; @override void initState() { @@ -50,7 +51,7 @@ class _FriendMessageBubbleState extends State { if (_isHideMsg) { if (widget.index + 1 == widget.length) { _isHideMsg = false; - Timer( + _timer = Timer( const Duration(milliseconds: 3500), () { setState(() { @@ -62,6 +63,14 @@ class _FriendMessageBubbleState extends State { } } + @override + void dispose() { + super.dispose(); + if (_timer != null) { + _timer!.cancel(); + } + } + @override Widget build(BuildContext context) { bool isFriend = widget.senderId == widget.contactId; @@ -171,7 +180,7 @@ class _FriendMessageBubbleState extends State { tapTargetSize: MaterialTapTargetSize.shrinkWrap, ), child: const Text('显示消息'), - ), + ) ], ), ); diff --git a/lib/screens/message/components/group_chat_message_bubble.dart b/lib/screens/message/components/group_chat_message_bubble.dart index c50e98c..cc42311 100755 --- a/lib/screens/message/components/group_chat_message_bubble.dart +++ b/lib/screens/message/components/group_chat_message_bubble.dart @@ -43,18 +43,20 @@ class GroupChatMessageBubble extends StatefulWidget { class _GroupChatMessageBubbleState extends State { // add late here so you can access widget instance late bool _isHideMsg; + Timer? _timer; @override void initState() { super.initState(); final chatSettingBox = Hive.box('chat_setting'); late final chatSetting = chatSettingBox.get(widget.contactId); + _isHideMsg = chatSetting!.isHideMsg; if (_isHideMsg) { if (widget.index + 1 == widget.length) { _isHideMsg = false; - Timer( + _timer = Timer( const Duration(milliseconds: 3500), () { setState(() { @@ -66,6 +68,14 @@ class _GroupChatMessageBubbleState extends State { } } + @override + void dispose() { + super.dispose(); + if (_timer != null) { + _timer!.cancel(); + } + } + @override Widget build(BuildContext context) { return Container( @@ -155,14 +165,19 @@ class _GroupChatMessageBubbleState extends State { ), ], ), - TextButton( - onPressed: () {}, - style: TextButton.styleFrom( - padding: EdgeInsets.zero, - tapTargetSize: MaterialTapTargetSize.shrinkWrap, + if (_isHideMsg) + TextButton( + onPressed: () { + setState(() { + _isHideMsg = false; + }); + }, + style: TextButton.styleFrom( + padding: EdgeInsets.zero, + tapTargetSize: MaterialTapTargetSize.shrinkWrap, + ), + child: const Text('显示信息'), ), - child: const Text('显示信息'), - ), ], ), ); diff --git a/lib/screens/message/group_chat_message_screen.dart b/lib/screens/message/group_chat_message_screen.dart index c2c990f..47ef4ca 100755 --- a/lib/screens/message/group_chat_message_screen.dart +++ b/lib/screens/message/group_chat_message_screen.dart @@ -74,7 +74,6 @@ class _GroupChatMessageScreenState extends State { ); } } - print('22222222222222'); _isGettingNameAvatar.remove(senderId); return Future(() => true); @@ -210,7 +209,7 @@ class _GroupChatMessageScreenState extends State { messageT.senderId, ), builder: (context, snapshot) { - if (snapshot.hasData) { + if (snapshot.hasData || !isOther) { return GroupChatMessageBubble( key: ValueKey(i), index: i, diff --git a/lib/screens/more/setting_screen/setting_screen.dart b/lib/screens/more/setting_screen/setting_screen.dart index 6176dc9..7c98935 100644 --- a/lib/screens/more/setting_screen/setting_screen.dart +++ b/lib/screens/more/setting_screen/setting_screen.dart @@ -46,7 +46,7 @@ class SettingScreen extends StatelessWidget { getIt.get().clear(); getIt.get().clear(); getIt.get().clear(); - Hive.deleteFromDisk(); + // Hive.deleteFromDisk(); await HiveDatabase.close(); }, ); diff --git a/lib/utils/ws_receive_callback.dart b/lib/utils/ws_receive_callback.dart index 1ccb3fd..348a451 100644 --- a/lib/utils/ws_receive_callback.dart +++ b/lib/utils/ws_receive_callback.dart @@ -268,7 +268,7 @@ void receiveGroupChatMsg( void receiveChatImages(Map msg) async { print('=================收到了聊天图片事件=================='); - // print(msg); + // // print(msg); print('======================================='); String chatImageDir = getIt.get().baseImageDir; String filename = msg['filename']; @@ -292,13 +292,14 @@ void receiveChatImages(Map msg) async { await dir.create(recursive: true); } - int totalChunkNum = msg['totalChunkNum']; + int totalChunkNum = msg['totalChunkNum'] as int; if (totalChunkNum == 1) { await file.writeAsBytes(List.from(msg['bytes'])); - Future.delayed( + await Future.delayed( const Duration(milliseconds: 200), () { + print('lllllllllll'); aprBox.put( filename, AttachmentProgress(1, 1, 1.0, true, false),