From adbd5e04d737de81dd9bef00fc8120072e4d5a55 Mon Sep 17 00:00:00 2001 From: Jolie <412895109@qq.com> Date: Tue, 2 Dec 2025 16:23:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(friend):=20=E5=AE=9E=E7=8E=B0=E5=A5=BD?= =?UTF-8?q?=E5=8F=8B=E5=88=97=E8=A1=A8=E5=8A=A0=E8=BD=BD=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增好友控制器用于管理好友列表数据 - 实现加载好友列表的方法,包括错误处理和状态管理 - 添加刷新好友列表的功能 - 集成IM登录状态检查,确保在登录后加载数据 - 使用RxJS进行响应式状态管理(加载状态、错误消息) - 在初始化时自动加载好友列表数据 --- lib/controller/message/friend_controller.dart | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 lib/controller/message/friend_controller.dart diff --git a/lib/controller/message/friend_controller.dart b/lib/controller/message/friend_controller.dart new file mode 100644 index 0000000..b6849aa --- /dev/null +++ b/lib/controller/message/friend_controller.dart @@ -0,0 +1,60 @@ +import 'package:get/get.dart'; +import 'package:im_flutter_sdk/im_flutter_sdk.dart'; +import '../../im/im_manager.dart'; + +class FriendController extends GetxController { + // 好友列表数据 + final friendList = [].obs; + // 加载状态 + final isLoading = false.obs; + // 错误消息 + final errorMessage = ''.obs; + + @override + void onInit() { + super.onInit(); + // 初始化时加载好友列表 + loadFriends(); + } + + /// 加载好友列表 + Future loadFriends() async { + try { + isLoading.value = true; + errorMessage.value = ''; + + // 检查 IM 登录状态 + if (!IMManager.instance.isLoggedIn) { + if (Get.isLogEnable) { + Get.log('⚠️ [FriendController] IM 未登录,无法加载好友列表'); + } + errorMessage.value = 'IM 未登录,无法加载好友列表'; + isLoading.value = false; + return; + } + + // 从 IMManager 获取所有联系人 + final contacts = await IMManager.instance.getAllContacts(); + + // 更新好友列表 + friendList.value = contacts; + + if (Get.isLogEnable) { + Get.log('✅ [FriendController] 加载好友列表成功,共 ${contacts.length} 个好友'); + } + } catch (e) { + if (Get.isLogEnable) { + Get.log('❌ [FriendController] 加载好友列表失败: $e'); + } + errorMessage.value = '加载好友列表失败,请稍后重试'; + } finally { + isLoading.value = false; + } + } + + /// 刷新好友列表 + Future refreshFriends() async { + await loadFriends(); + } +} +