Conversation groups overview
Understand conversation-group data and the listener lifecycle in the OpenIM Flutter SDK.
Conversation groups organize the current user's conversation list. They manage relationships between conversationID values and groups. They do not create chat groups, change group membership, or alter message destinations.
Group types
| Enum value | Number | Purpose |
|---|---|---|
ConversationGroupType.custom | 0 | A regular custom group. |
ConversationGroupType.preset | 1 | A preset group maintained by SDK or server rules. |
ConversationGroupType.all | 2 | Used when querying all group types. |
Use custom for ordinary user-defined categories. The rules that generate preset groups depend on the OpenIMServer deployment.
Common ConversationGroupInfo fields include conversationGroupID, name, serial, version, ex, conversationGroupType, hidden, unreadCount, and conversationIDs. All of these fields are nullable in the pinned version.
Available operations
- Create a conversation group
- Retrieve conversation groups
- Retrieve conversations in a group
- Retrieve the groups containing a conversation
- Update a conversation group
- Reorder conversation groups
- Add conversations to groups
- Remove conversations from groups
- Delete a conversation group
Listen for group changes
Future<void> registerConversationGroupListener() {
return OpenIM.iMManager.conversationGroupManager
.setConversationGroupListener(
OnConversationGroupListener(
onConversationGroupAdded: mergeConversationGroups,
onConversationGroupChanged: mergeConversationGroups,
onConversationGroupDeleted: removeConversationGroups,
onConversationGroupMemberAdded: mergeConversationGroupMembers,
onConversationGroupMemberDeleted: removeConversationGroupMembers,
),
);
}| Listener | Payload | Handling |
|---|---|---|
onConversationGroupAdded | List<ConversationGroupInfo> | Merge newly added groups. |
onConversationGroupChanged | List<ConversationGroupInfo> | Update by conversationGroupID. |
onConversationGroupDeleted | List<ConversationGroupInfo> | Remove deleted groups. |
onConversationGroupMemberAdded | List<ConversationGroupMemberChangedInfo> | Merge group, conversationIDs, and conversations. |
onConversationGroupMemberDeleted | List<ConversationGroupMemberChangedInfo> | Remove the corresponding relationships. |
Member-change fields may be empty. Check group?.conversationGroupID and each conversation ID first. Merge groups idempotently by conversationGroupID, then combine that ID with conversationID for membership relationships.
ConversationGroupManager retains only one listener, and the pinned SDK has no remove or unset method. Set the listener centrally once. When switching accounts, stop dispatching events to the old state, then replace the listener with a complete one for the new account. Future completion, listener arrival, and a reconciliation query are three separate stages.
Was this page helpful?