浏览 SDKs · Flutter
SDKsFlutter商业版

会话分组概览

了解 OpenIM Flutter SDK 会话分组的数据模型和 listener 生命周期。

复制

会话分组用于整理当前登录用户的会话列表。它管理 conversationID 与分组的关系,不会创建聊天群组、修改群成员,也不会改变消息发送目标。

分组类型

枚举值数值用途
ConversationGroupType.custom0普通自定义分组。
ConversationGroupType.preset1由 SDK 或服务端规则维护的预设分组。
ConversationGroupType.all2查询全部类型时使用。

普通用户分类使用 custom。预设分组的生成规则取决于当前 OpenIMServer 部署。

ConversationGroupInfo 的常用字段包括 conversationGroupIDnameserialversionexconversationGroupTypehiddenunreadCountconversationIDs,固定版本中这些字段均为 nullable。

可用操作

监听分组变化

Future<void> registerConversationGroupListener() {
  return OpenIM.iMManager.conversationGroupManager
      .setConversationGroupListener(
    OnConversationGroupListener(
      onConversationGroupAdded: mergeConversationGroups,
      onConversationGroupChanged: mergeConversationGroups,
      onConversationGroupDeleted: removeConversationGroups,
      onConversationGroupMemberAdded: mergeConversationGroupMembers,
      onConversationGroupMemberDeleted: removeConversationGroupMembers,
    ),
  );
}
Listener载荷处理方式
onConversationGroupAddedList<ConversationGroupInfo>合并新增分组。
onConversationGroupChangedList<ConversationGroupInfo>conversationGroupID 更新。
onConversationGroupDeletedList<ConversationGroupInfo>移除已删除分组。
onConversationGroupMemberAddedList<ConversationGroupMemberChangedInfo>合并 groupconversationIDsconversations
onConversationGroupMemberDeletedList<ConversationGroupMemberChangedInfo>移除对应关联。

成员变化字段可能为空,应先检查 group?.conversationGroupID 和会话 ID。分组按 conversationGroupID 幂等合并,成员关系再结合 conversationID

ConversationGroupManager 只保存一个 listener,固定 SDK 没有 remove 或 unset 方法。应用应集中设置一次;切换账号时停止向旧状态分发,再用新账号的完整 listener 覆盖。Future 完成、listener 到达和重新查询是三个独立阶段。