浏览 SDKs · Flutter
SDKsFlutter

获取黑名单列表

使用 OpenIM Flutter SDK 获取当前用户的黑名单。

复制

OpenIMSDK 黑名单记录当前用户主动拉黑的用户。调用 getBlacklist() 可获取完整列表,每条记录都是 BlacklistInfo。这些数据可用于构建黑名单设置页、展示资料卡中的关系状态,以及限制聊天入口。

黑名单与群组管理是两类独立能力。禁言、移除群成员或调整群角色时,应使用群成员相关 API;getBlacklist() 只读取当前用户维护的黑名单。

获取黑名单

完成 SDK 初始化并调用 login() 后,使用 getBlacklist() 读取当前用户的黑名单。返回空列表表示黑名单中没有用户。

Future<List<BlacklistInfo>> loadBlockedUsers() async {
  try {
    return await OpenIM.iMManager.friendshipManager.getBlacklist();
  } catch (error) {
    debugPrint('getBlacklist failed: $error');
    rethrow;
  }
}

final blockedUsers = await loadBlockedUsers();
replaceBlockedUsers(blockedUsers);

资料卡、会话操作菜单和联系人列表通常只需判断某个 userID 是否在黑名单中。建议用 userID 建立集合,昵称和头像等字段仅用于展示。

final blockedUserIDs = blockedUsers
    .map((user) => user.userID)
    .whereType<String>()
    .toSet();

bool isBlocked(String userID) => blockedUserIDs.contains(userID);

黑名单记录字段

getBlacklist() 返回 List<BlacklistInfo>。渲染列表时,应使用 userID 作为稳定的列表 key,其他字段仅用于展示。

字段说明
userID被当前用户拉黑的目标用户 ID。
nickname目标用户昵称,用于列表展示。
faceURL目标用户头像地址。
ownerUserID这条黑名单关系的所有者,即当前用户 ID。
blockUserID黑名单关系中的被拉黑用户 ID;列表合并仍统一使用 userID
operatorUserID执行拉黑操作的用户 ID。
createTime黑名单关系创建时间。
addSource黑名单关系的添加来源。
gender目标用户性别值。
ex扩展字段,只解析业务已经约定的内容。

如果黑名单页还要展示公开资料或好友备注,应按 userID 合并数据,并明确区分 BlacklistInfoFriendInfoPublicUserInfo 的来源。

调用结果与增量变化

getBlacklist() 成功后,以返回的 List<BlacklistInfo> 完整替换当前黑名单快照。该查询不会触发黑名单新增或删除回调。首次进入页面或用户主动刷新时,应重新调用该方法建立完整列表。写操作分别见拉黑用户取消拉黑用户