Conversation groups overview
Understand the data models, group types, and listener lifecycles of conversation groups in the OpenIM Flutter SDK.
Conversation groups allow the currently signed-in user to organize conversations into custom folders or tags. They manage relations between conversationID and folder categories; they do not create chat groups, modify group rosters, or change message recipients.
Conversation group types
| Enum Option | Value | Behavior |
|---|---|---|
ConversationGroupType.custom | 0 | Standard user-created custom group folder. |
ConversationGroupType.preset | 1 | Preset folder managed by SDK or server-side rules. |
ConversationGroupType.all | 2 | Filter used when querying all folder types. |
Use custom for user-defined folders. Preset group behavior depends on your OpenIMServer deployment.
Key fields in ConversationGroupInfo include conversationGroupID, name, serial, version, ex, conversationGroupType, hidden, unreadCount, and conversationIDs. All fields are nullable in Dart.
Available operations
- Create a conversation group
- Query conversation groups
- Query conversations in group
- Query conversation group IDs by conversation ID
- Update a conversation group
- Set conversation group order
- Add conversations to groups
- Remove conversations from groups
- Delete a conversation group
Listen for conversation group events
Future<void> registerConversationGroupListener() {
return OpenIM.iMManager.conversationGroupManager
.setConversationGroupListener(
OnConversationGroupListener(
onConversationGroupAdded: mergeConversationGroups,
onConversationGroupChanged: mergeConversationGroups,
onConversationGroupDeleted: removeConversationGroups,
onConversationGroupMemberAdded: mergeConversationGroupMembers,
onConversationGroupMemberDeleted: removeConversationGroupMembers,
),
);
}| Callback | Event Payload | Handling Strategy |
|---|---|---|
onConversationGroupAdded | List<ConversationGroupInfo> | Append or merge newly created groups. |
onConversationGroupChanged | List<ConversationGroupInfo> | Update existing groups by conversationGroupID. |
onConversationGroupDeleted | List<ConversationGroupInfo> | Remove deleted groups from local state. |
onConversationGroupMemberAdded | List<ConversationGroupMemberChangedInfo> | Merge group, conversationIDs, and conversations. |
onConversationGroupMemberDeleted | List<ConversationGroupMemberChangedInfo> | Remove corresponding associations. |
Fields in member events may be null; always validate group?.conversationGroupID and conversation IDs before mutating state. Merge groups idempotently using conversationGroupID, and correlate members using conversationID.
ConversationGroupManager stores only one listener instance, and the SDK does not provide a remove method. Register this listener once in your application state layer; when switching accounts, stop forwarding events to inactive views and re-register the complete listener for the new account. Future completion, listener dispatch, and query recalibration are three separate stages.
Was this page helpful?