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

View File

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

View File

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

View File

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

View File

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

View File

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