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 合并数据,并明确区分 BlacklistInfo、FriendInfo 和 PublicUserInfo 的来源。
调用结果与增量变化
getBlacklist() 成功后,以返回的 List<BlacklistInfo> 完整替换当前黑名单快照。该查询不会触发黑名单新增或删除回调。首次进入页面或用户主动刷新时,应重新调用该方法建立完整列表。写操作分别见拉黑用户和取消拉黑用户。
这个页面有帮助吗?