queryMemberList method
查询群成员列表
teamId
群id
Implementation
@override
Future<List<UserInfoWithTeam>?> queryMemberList(String teamId) async {
var memberList = await NimCore.instance.teamService.queryMemberList(teamId);
if (memberList.isSuccess && memberList.data != null) {
var results =
memberList.data!.map((e) => UserInfoWithTeam(null, e)).toList();
//请求到的列表先排序
sortList(results);
//先使用本地缓存数据填充用户信息和好友信息
_fillUserInfoWithLocalCache(results);
//剩余本地没有用户信息的用户在使用远端用户信息填充
var accIdList = results
.where((element) => element.userInfo == null)
.map((e) => e.teamInfo.account!)
.toList();
int totalCount = accIdList.length;
int maxCount = 150;
int startIndex = 0;
int endIndex = min(totalCount, startIndex + maxCount);
//remote 接口一次最多150个,分批请求
while (startIndex < endIndex) {
var map =
await _getUserInfoMap(accIdList.sublist(startIndex, endIndex));
results.where((element) => element.userInfo == null).forEach((element) {
element.userInfo = map[element.teamInfo.account!];
});
startIndex = endIndex;
endIndex = min(totalCount, endIndex + maxCount);
}
return results;
}
return null;
}