fix:修改切换网络时有时连接不上的问题

This commit is contained in:
SL 2025-03-01 17:33:52 +08:00
commit f6b405a0f7
6 changed files with 38 additions and 26 deletions

View File

@ -118,5 +118,7 @@
* fix: Add query total unread quantity and query followed channels
### 1.5.9
* fix: Modify network monitoring
### 1.6.0
* fix: Error in modifying the channel extension data synchronized to the most recent session
### 1.6.1
* fix: 修复网络切换时有时无法连接问题

View File

@ -319,7 +319,7 @@ class ListViewShowDataState extends State<ListViewShowData> {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => const ChatPage(),
builder: (context) => const ChatPage(),
settings: RouteSettings(
arguments: ChatChannel(
msgList[pos].msg.channelID,
@ -371,15 +371,15 @@ class ListViewShowDataState extends State<ListViewShowData> {
_showDialog(BuildContext context) {
showDialog(
context: context,
builder: (BuildContext _context) => InputDialog(
builder: (BuildContext ctx) => InputDialog(
title: const Text("创建新的聊天"),
back: (channelID, channelType) async {
bool isSuccess = await HttpUtils.createGroup(channelID);
if (isSuccess) {
Navigator.push(
context,
ctx,
MaterialPageRoute(
builder: (context) => ChatPage(),
builder: (context) => const ChatPage(),
settings: RouteSettings(
arguments: ChatChannel(
channelID,

View File

@ -43,7 +43,6 @@ class MyApp extends StatelessWidget {
class LoginDemo extends StatefulWidget {
const LoginDemo({super.key});
@override
LoginDemoState createState() => LoginDemoState();
}
@ -52,7 +51,9 @@ class LoginDemoState extends State<LoginDemo> {
var apiStr = '';
var uidStr = '';
var tokenStr = '';
LoginDemoState() {
WKIM.shared.connectionManager.disconnect(false);
}
@override
Widget build(BuildContext context) {
return Scaffold(
@ -156,10 +157,10 @@ class LoginDemoState extends State<LoginDemo> {
UserInfo.uid = uidStr;
IMUtils.initIM().then((result) {
if (result) {
Navigator.push(
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (_) => const HomePage()));
MaterialPageRoute(builder: (_) => const HomePage()),
(Route<dynamic> route) => false);
}
});
}

View File

@ -160,8 +160,11 @@ class ChannelDB {
Future<List<WKChannel>> queryWithMuted() async {
List<WKChannel> list = [];
var sql = "select * from ${WKDBConst.tableChannel} where mute=1";
List<Map<String, Object?>> results =
await WKDBHelper.shared.getDB()!.rawQuery(sql);
List<Map<String, Object?>>? results =
await WKDBHelper.shared.getDB()?.rawQuery(sql);
if (results == null || results.isEmpty) {
return list;
}
for (Map<String, Object?> data in results) {
var channel = WKDBConst.serializeChannel(data);
list.add(channel);

View File

@ -32,6 +32,9 @@ class ConversationDB {
for (Map<String, Object?> data in results) {
WKConversationMsg msg = WKDBConst.serializeCoversation(data);
WKChannel wkChannel = WKDBConst.serializeChannel(data);
wkChannel.remoteExtraMap =
WKDBConst.readDynamic(data, 'channel_remote_extra');
wkChannel.localExtra = WKDBConst.readDynamic(data, 'channel_extra');
WKUIConversationMsg uiMsg = getUIMsg(msg);
uiMsg.setWkChannel(wkChannel);
list.add(uiMsg);
@ -102,7 +105,7 @@ class ConversationDB {
var channels = await ChannelDB.shared.queryWithMuted();
var channelIds = [];
var sql = "";
List<Map<String, Object?>> list;
List<Map<String, Object?>>? list;
if (channels.isNotEmpty) {
for (var channel in channels) {
channelIds.add(channel.channelID);
@ -113,13 +116,14 @@ class ConversationDB {
} else {
sql =
"select SUM(unread_count) count from ${WKDBConst.tableConversation}";
list = await WKDBHelper.shared.getDB()!.rawQuery(sql);
list = await WKDBHelper.shared.getDB()?.rawQuery(sql);
}
if (list.isNotEmpty) {
dynamic data = list[0];
count = WKDBConst.readInt(data, 'count');
Logs.error('总数量$count');
if (list == null || list.isEmpty) {
return count;
}
dynamic data = list[0];
count = WKDBConst.readInt(data, 'count');
Logs.error('总数量$count');
return count;
}

View File

@ -34,15 +34,17 @@ class ReminderDB {
Future<List<WKReminder>> queryWithChannel(
String channelID, int channelType, int done) async {
List<WKReminder> list = [];
List<Map<String, Object?>> results = await WKDBHelper.shared.getDB()!.query(
WKDBConst.tableReminders,
where: "channel_id=? and channel_type=? and done=?",
whereArgs: [channelID, channelType, done],
orderBy: "message_seq desc");
if (results.isNotEmpty) {
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeReminder(data));
}
List<Map<String, Object?>>? results = await WKDBHelper.shared
.getDB()
?.query(WKDBConst.tableReminders,
where: "channel_id=? and channel_type=? and done=?",
whereArgs: [channelID, channelType, done],
orderBy: "message_seq desc");
if (results == null || results.isEmpty) {
return list;
}
for (Map<String, Object?> data in results) {
list.add(WKDBConst.serializeReminder(data));
}
return list;
}