|
|
@ -1,6 +1,7 @@ |
|
|
import 'dart:async'; |
|
|
import 'dart:async'; |
|
|
import 'package:get/get.dart'; |
|
|
import 'package:get/get.dart'; |
|
|
import 'package:im_flutter_sdk/im_flutter_sdk.dart'; |
|
|
import 'package:im_flutter_sdk/im_flutter_sdk.dart'; |
|
|
|
|
|
import 'package:app_badge_plus/app_badge_plus.dart'; |
|
|
import '../../im/im_manager.dart'; |
|
|
import '../../im/im_manager.dart'; |
|
|
import '../../model/mine/user_base_data.dart'; |
|
|
import '../../model/mine/user_base_data.dart'; |
|
|
import '../mine/user_controller.dart'; |
|
|
import '../mine/user_controller.dart'; |
|
|
@ -81,10 +82,28 @@ class ConversationController extends GetxController { |
|
|
@override |
|
|
@override |
|
|
void onInit() { |
|
|
void onInit() { |
|
|
super.onInit(); |
|
|
super.onInit(); |
|
|
|
|
|
// 监听总未读数变化,同步更新应用角标 |
|
|
|
|
|
totalUnreadCount.listen((count) { |
|
|
|
|
|
_updateAppBadge(count); |
|
|
|
|
|
}); |
|
|
// 初始化时检查 IM 登录状态,如果已登录则加载会话列表 |
|
|
// 初始化时检查 IM 登录状态,如果已登录则加载会话列表 |
|
|
_checkAndLoadConversations(); |
|
|
_checkAndLoadConversations(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// 更新应用角标 |
|
|
|
|
|
Future<void> _updateAppBadge(int count) async { |
|
|
|
|
|
try { |
|
|
|
|
|
await AppBadgePlus.updateBadge(count); |
|
|
|
|
|
if (Get.isLogEnable) { |
|
|
|
|
|
Get.log('✅ [ConversationController] 应用角标已更新: $count'); |
|
|
|
|
|
} |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
if (Get.isLogEnable) { |
|
|
|
|
|
Get.log('⚠️ [ConversationController] 更新应用角标失败: $e'); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/// 检查 IM 登录状态并加载会话列表 |
|
|
/// 检查 IM 登录状态并加载会话列表 |
|
|
Future<void> _checkAndLoadConversations() async { |
|
|
Future<void> _checkAndLoadConversations() async { |
|
|
// 如果已登录,直接加载 |
|
|
// 如果已登录,直接加载 |
|
|
@ -481,6 +500,8 @@ class ConversationController extends GetxController { |
|
|
total += unreadCount; |
|
|
total += unreadCount; |
|
|
} |
|
|
} |
|
|
totalUnreadCount.value = total; |
|
|
totalUnreadCount.value = total; |
|
|
|
|
|
// 更新应用角标 |
|
|
|
|
|
await _updateAppBadge(total); |
|
|
if (Get.isLogEnable) { |
|
|
if (Get.isLogEnable) { |
|
|
Get.log('✅ [ConversationController] 总未读数已更新: $total'); |
|
|
Get.log('✅ [ConversationController] 总未读数已更新: $total'); |
|
|
} |
|
|
} |
|
|
@ -489,6 +510,8 @@ class ConversationController extends GetxController { |
|
|
Get.log('⚠️ [ConversationController] 更新总未读数失败: $e'); |
|
|
Get.log('⚠️ [ConversationController] 更新总未读数失败: $e'); |
|
|
} |
|
|
} |
|
|
totalUnreadCount.value = 0; |
|
|
totalUnreadCount.value = 0; |
|
|
|
|
|
// 更新应用角标为 0 |
|
|
|
|
|
await _updateAppBadge(0); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|