fix bug that can't convert unreceived msgs while refreshes
parent
67377bea97
commit
e8ec7d9fa4
|
@ -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;
|
||||
|
|
|
@ -75,9 +75,11 @@ class _ChatScreenState extends State<ChatScreen> with GetItStateMixin {
|
|||
Future<void> _getUnreceivedMsg(String userId) async {
|
||||
print('触发了获取信息事件..................');
|
||||
final res = await getUnreceivedMsg(userId);
|
||||
print(res);
|
||||
|
||||
if (res['code'] == 10900) {
|
||||
for (var msg in res['data'] as List<Map<String, dynamic>>) {
|
||||
|
||||
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<ChatScreen> with GetItStateMixin {
|
|||
);
|
||||
return socketStatus == SocketStatus.reconnecting;
|
||||
});
|
||||
}
|
||||
|
||||
SocketStatus socketStatus =
|
||||
get<WebSocketManager>().socketStatus;
|
||||
if (socketStatus == SocketStatus.connected) {
|
||||
await _getUnreceivedMsg(userId);
|
||||
}
|
||||
socketStatus =
|
||||
get<WebSocketManager>().socketStatus;
|
||||
|
||||
if (socketStatus == SocketStatus.connected) {
|
||||
await _getUnreceivedMsg(userId);
|
||||
}
|
||||
},
|
||||
child: ValueListenableBuilder(
|
||||
|
|
|
@ -36,6 +36,11 @@ class GroupChatChatTile extends StatefulWidget {
|
|||
}
|
||||
|
||||
class _GroupChatChatTileState extends State<GroupChatChatTile> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Box<ChatSetting> chatSettingBox = Hive.box('chat_setting');
|
||||
|
|
|
@ -84,7 +84,7 @@ class _AttachmentContainerState extends State<AttachmentContainer>
|
|||
? Image.file(File(filePath))
|
||||
: Image.asset('assets/images/loading.gif'),
|
||||
),
|
||||
if (progress < 1)
|
||||
if (progress < 1.0)
|
||||
Positioned.fill(
|
||||
child: Stack(
|
||||
alignment: Alignment.center,
|
||||
|
|
|
@ -40,6 +40,7 @@ class FriendMessageBubble extends StatefulWidget {
|
|||
class _FriendMessageBubbleState extends State<FriendMessageBubble> {
|
||||
// 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<FriendMessageBubble> {
|
|||
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<FriendMessageBubble> {
|
|||
}
|
||||
}
|
||||
|
||||
@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<FriendMessageBubble> {
|
|||
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||
),
|
||||
child: const Text('显示消息'),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
|
|
|
@ -43,18 +43,20 @@ class GroupChatMessageBubble extends StatefulWidget {
|
|||
class _GroupChatMessageBubbleState extends State<GroupChatMessageBubble> {
|
||||
// add late here so you can access widget instance
|
||||
late bool _isHideMsg;
|
||||
Timer? _timer;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
final chatSettingBox = Hive.box<ChatSetting>('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<GroupChatMessageBubble> {
|
|||
}
|
||||
}
|
||||
|
||||
@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<GroupChatMessageBubble> {
|
|||
),
|
||||
],
|
||||
),
|
||||
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('显示信息'),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
|
|
@ -74,7 +74,6 @@ class _GroupChatMessageScreenState extends State<GroupChatMessageScreen> {
|
|||
);
|
||||
}
|
||||
}
|
||||
print('22222222222222');
|
||||
_isGettingNameAvatar.remove(senderId);
|
||||
|
||||
return Future(() => true);
|
||||
|
@ -210,7 +209,7 @@ class _GroupChatMessageScreenState extends State<GroupChatMessageScreen> {
|
|||
messageT.senderId,
|
||||
),
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.hasData) {
|
||||
if (snapshot.hasData || !isOther) {
|
||||
return GroupChatMessageBubble(
|
||||
key: ValueKey(i),
|
||||
index: i,
|
||||
|
|
|
@ -46,7 +46,7 @@ class SettingScreen extends StatelessWidget {
|
|||
getIt.get<ApplyList>().clear();
|
||||
getIt.get<Contact>().clear();
|
||||
getIt.get<ContactAccountProfile>().clear();
|
||||
Hive.deleteFromDisk();
|
||||
// Hive.deleteFromDisk();
|
||||
await HiveDatabase.close();
|
||||
},
|
||||
);
|
||||
|
|
|
@ -268,7 +268,7 @@ void receiveGroupChatMsg(
|
|||
|
||||
void receiveChatImages(Map<String, dynamic> msg) async {
|
||||
print('=================收到了聊天图片事件==================');
|
||||
// print(msg);
|
||||
// // print(msg);
|
||||
print('=======================================');
|
||||
String chatImageDir = getIt.get<UserProfile>().baseImageDir;
|
||||
String filename = msg['filename'];
|
||||
|
@ -292,13 +292,14 @@ void receiveChatImages(Map<String, dynamic> msg) async {
|
|||
await dir.create(recursive: true);
|
||||
}
|
||||
|
||||
int totalChunkNum = msg['totalChunkNum'];
|
||||
int totalChunkNum = msg['totalChunkNum'] as int;
|
||||
|
||||
if (totalChunkNum == 1) {
|
||||
await file.writeAsBytes(List<int>.from(msg['bytes']));
|
||||
Future.delayed(
|
||||
await Future.delayed(
|
||||
const Duration(milliseconds: 200),
|
||||
() {
|
||||
print('lllllllllll');
|
||||
aprBox.put(
|
||||
filename,
|
||||
AttachmentProgress(1, 1, 1.0, true, false),
|
||||
|
|
Loading…
Reference in New Issue