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 'dart:convert';
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:hive_flutter/hive_flutter.dart';
|
import 'package:hive_flutter/hive_flutter.dart';
|
||||||
import 'package:web_socket_channel/web_socket_channel.dart';
|
import 'package:web_socket_channel/web_socket_channel.dart';
|
||||||
import 'package:web_socket_channel/status.dart' as status;
|
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 {
|
Future<void> _getUnreceivedMsg(String userId) async {
|
||||||
print('触发了获取信息事件..................');
|
print('触发了获取信息事件..................');
|
||||||
final res = await getUnreceivedMsg(userId);
|
final res = await getUnreceivedMsg(userId);
|
||||||
|
print(res);
|
||||||
|
|
||||||
if (res['code'] == 10900) {
|
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') {
|
if (msg['event'] == 'friend-chat-msg') {
|
||||||
receiveFriendMsg(msg, false);
|
receiveFriendMsg(msg, false);
|
||||||
} else if (msg['event'] == 'group-chat-msg') {
|
} else if (msg['event'] == 'group-chat-msg') {
|
||||||
|
@ -170,12 +172,13 @@ class _ChatScreenState extends State<ChatScreen> with GetItStateMixin {
|
||||||
);
|
);
|
||||||
return socketStatus == SocketStatus.reconnecting;
|
return socketStatus == SocketStatus.reconnecting;
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
SocketStatus socketStatus =
|
socketStatus =
|
||||||
get<WebSocketManager>().socketStatus;
|
get<WebSocketManager>().socketStatus;
|
||||||
if (socketStatus == SocketStatus.connected) {
|
|
||||||
await _getUnreceivedMsg(userId);
|
if (socketStatus == SocketStatus.connected) {
|
||||||
}
|
await _getUnreceivedMsg(userId);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
child: ValueListenableBuilder(
|
child: ValueListenableBuilder(
|
||||||
|
|
|
@ -36,6 +36,11 @@ class GroupChatChatTile extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _GroupChatChatTileState extends State<GroupChatChatTile> {
|
class _GroupChatChatTileState extends State<GroupChatChatTile> {
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
Box<ChatSetting> chatSettingBox = Hive.box('chat_setting');
|
Box<ChatSetting> chatSettingBox = Hive.box('chat_setting');
|
||||||
|
|
|
@ -84,7 +84,7 @@ class _AttachmentContainerState extends State<AttachmentContainer>
|
||||||
? Image.file(File(filePath))
|
? Image.file(File(filePath))
|
||||||
: Image.asset('assets/images/loading.gif'),
|
: Image.asset('assets/images/loading.gif'),
|
||||||
),
|
),
|
||||||
if (progress < 1)
|
if (progress < 1.0)
|
||||||
Positioned.fill(
|
Positioned.fill(
|
||||||
child: Stack(
|
child: Stack(
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
|
|
|
@ -40,6 +40,7 @@ class FriendMessageBubble extends StatefulWidget {
|
||||||
class _FriendMessageBubbleState extends State<FriendMessageBubble> {
|
class _FriendMessageBubbleState extends State<FriendMessageBubble> {
|
||||||
// add late here so you can access widget instance
|
// add late here so you can access widget instance
|
||||||
late bool _isHideMsg;
|
late bool _isHideMsg;
|
||||||
|
Timer? _timer;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
@ -50,7 +51,7 @@ class _FriendMessageBubbleState extends State<FriendMessageBubble> {
|
||||||
if (_isHideMsg) {
|
if (_isHideMsg) {
|
||||||
if (widget.index + 1 == widget.length) {
|
if (widget.index + 1 == widget.length) {
|
||||||
_isHideMsg = false;
|
_isHideMsg = false;
|
||||||
Timer(
|
_timer = Timer(
|
||||||
const Duration(milliseconds: 3500),
|
const Duration(milliseconds: 3500),
|
||||||
() {
|
() {
|
||||||
setState(() {
|
setState(() {
|
||||||
|
@ -62,6 +63,14 @@ class _FriendMessageBubbleState extends State<FriendMessageBubble> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
if (_timer != null) {
|
||||||
|
_timer!.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
bool isFriend = widget.senderId == widget.contactId;
|
bool isFriend = widget.senderId == widget.contactId;
|
||||||
|
@ -171,7 +180,7 @@ class _FriendMessageBubbleState extends State<FriendMessageBubble> {
|
||||||
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||||
),
|
),
|
||||||
child: const Text('显示消息'),
|
child: const Text('显示消息'),
|
||||||
),
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -43,18 +43,20 @@ class GroupChatMessageBubble extends StatefulWidget {
|
||||||
class _GroupChatMessageBubbleState extends State<GroupChatMessageBubble> {
|
class _GroupChatMessageBubbleState extends State<GroupChatMessageBubble> {
|
||||||
// add late here so you can access widget instance
|
// add late here so you can access widget instance
|
||||||
late bool _isHideMsg;
|
late bool _isHideMsg;
|
||||||
|
Timer? _timer;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
final chatSettingBox = Hive.box<ChatSetting>('chat_setting');
|
final chatSettingBox = Hive.box<ChatSetting>('chat_setting');
|
||||||
late final chatSetting = chatSettingBox.get(widget.contactId);
|
late final chatSetting = chatSettingBox.get(widget.contactId);
|
||||||
|
|
||||||
_isHideMsg = chatSetting!.isHideMsg;
|
_isHideMsg = chatSetting!.isHideMsg;
|
||||||
|
|
||||||
if (_isHideMsg) {
|
if (_isHideMsg) {
|
||||||
if (widget.index + 1 == widget.length) {
|
if (widget.index + 1 == widget.length) {
|
||||||
_isHideMsg = false;
|
_isHideMsg = false;
|
||||||
Timer(
|
_timer = Timer(
|
||||||
const Duration(milliseconds: 3500),
|
const Duration(milliseconds: 3500),
|
||||||
() {
|
() {
|
||||||
setState(() {
|
setState(() {
|
||||||
|
@ -66,6 +68,14 @@ class _GroupChatMessageBubbleState extends State<GroupChatMessageBubble> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
if (_timer != null) {
|
||||||
|
_timer!.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
|
@ -155,14 +165,19 @@ class _GroupChatMessageBubbleState extends State<GroupChatMessageBubble> {
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
TextButton(
|
if (_isHideMsg)
|
||||||
onPressed: () {},
|
TextButton(
|
||||||
style: TextButton.styleFrom(
|
onPressed: () {
|
||||||
padding: EdgeInsets.zero,
|
setState(() {
|
||||||
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
_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);
|
_isGettingNameAvatar.remove(senderId);
|
||||||
|
|
||||||
return Future(() => true);
|
return Future(() => true);
|
||||||
|
@ -210,7 +209,7 @@ class _GroupChatMessageScreenState extends State<GroupChatMessageScreen> {
|
||||||
messageT.senderId,
|
messageT.senderId,
|
||||||
),
|
),
|
||||||
builder: (context, snapshot) {
|
builder: (context, snapshot) {
|
||||||
if (snapshot.hasData) {
|
if (snapshot.hasData || !isOther) {
|
||||||
return GroupChatMessageBubble(
|
return GroupChatMessageBubble(
|
||||||
key: ValueKey(i),
|
key: ValueKey(i),
|
||||||
index: i,
|
index: i,
|
||||||
|
|
|
@ -46,7 +46,7 @@ class SettingScreen extends StatelessWidget {
|
||||||
getIt.get<ApplyList>().clear();
|
getIt.get<ApplyList>().clear();
|
||||||
getIt.get<Contact>().clear();
|
getIt.get<Contact>().clear();
|
||||||
getIt.get<ContactAccountProfile>().clear();
|
getIt.get<ContactAccountProfile>().clear();
|
||||||
Hive.deleteFromDisk();
|
// Hive.deleteFromDisk();
|
||||||
await HiveDatabase.close();
|
await HiveDatabase.close();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
|
@ -268,7 +268,7 @@ void receiveGroupChatMsg(
|
||||||
|
|
||||||
void receiveChatImages(Map<String, dynamic> msg) async {
|
void receiveChatImages(Map<String, dynamic> msg) async {
|
||||||
print('=================收到了聊天图片事件==================');
|
print('=================收到了聊天图片事件==================');
|
||||||
// print(msg);
|
// // print(msg);
|
||||||
print('=======================================');
|
print('=======================================');
|
||||||
String chatImageDir = getIt.get<UserProfile>().baseImageDir;
|
String chatImageDir = getIt.get<UserProfile>().baseImageDir;
|
||||||
String filename = msg['filename'];
|
String filename = msg['filename'];
|
||||||
|
@ -292,13 +292,14 @@ void receiveChatImages(Map<String, dynamic> msg) async {
|
||||||
await dir.create(recursive: true);
|
await dir.create(recursive: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
int totalChunkNum = msg['totalChunkNum'];
|
int totalChunkNum = msg['totalChunkNum'] as int;
|
||||||
|
|
||||||
if (totalChunkNum == 1) {
|
if (totalChunkNum == 1) {
|
||||||
await file.writeAsBytes(List<int>.from(msg['bytes']));
|
await file.writeAsBytes(List<int>.from(msg['bytes']));
|
||||||
Future.delayed(
|
await Future.delayed(
|
||||||
const Duration(milliseconds: 200),
|
const Duration(milliseconds: 200),
|
||||||
() {
|
() {
|
||||||
|
print('lllllllllll');
|
||||||
aprBox.put(
|
aprBox.put(
|
||||||
filename,
|
filename,
|
||||||
AttachmentProgress(1, 1, 1.0, true, false),
|
AttachmentProgress(1, 1, 1.0, true, false),
|
||||||
|
|
Loading…
Reference in New Issue