Browse Source

feat(friend): 实现好友列表加载功能

- 新增好友控制器用于管理好友列表数据
- 实现加载好友列表的方法,包括错误处理和状态管理
- 添加刷新好友列表的功能
- 集成IM登录状态检查,确保在登录后加载数据
- 使用RxJS进行响应式状态管理(加载状态、错误消息)
- 在初始化时自动加载好友列表数据
ios
Jolie 3 months ago
parent
commit
adbd5e04d7
1 changed files with 60 additions and 0 deletions
  1. 60
      lib/controller/message/friend_controller.dart

60
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 = <EMContact>[].obs;
//
final isLoading = false.obs;
//
final errorMessage = ''.obs;
@override
void onInit() {
super.onInit();
//
loadFriends();
}
///
Future<void> 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<void> refreshFriends() async {
await loadFriends();
}
}
Loading…
Cancel
Save