queryMemberList method

  1. @override
Future<List<UserInfoWithTeam>?> queryMemberList(
  1. String teamId
)
override

查询群成员列表 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;
}