Browse SDKs · Flutter
SDKsFlutterEnterprise

Conversation groups overview

Understand conversation-group data and the listener lifecycle in the OpenIM Flutter SDK.

Copy

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 valueNumberPurpose
ConversationGroupType.custom0A regular custom group.
ConversationGroupType.preset1A preset group maintained by SDK or server rules.
ConversationGroupType.all2Used 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

Listen for group changes

Future<void> registerConversationGroupListener() {
  return OpenIM.iMManager.conversationGroupManager
      .setConversationGroupListener(
    OnConversationGroupListener(
      onConversationGroupAdded: mergeConversationGroups,
      onConversationGroupChanged: mergeConversationGroups,
      onConversationGroupDeleted: removeConversationGroups,
      onConversationGroupMemberAdded: mergeConversationGroupMembers,
      onConversationGroupMemberDeleted: removeConversationGroupMembers,
    ),
  );
}
ListenerPayloadHandling
onConversationGroupAddedList<ConversationGroupInfo>Merge newly added groups.
onConversationGroupChangedList<ConversationGroupInfo>Update by conversationGroupID.
onConversationGroupDeletedList<ConversationGroupInfo>Remove deleted groups.
onConversationGroupMemberAddedList<ConversationGroupMemberChangedInfo>Merge group, conversationIDs, and conversations.
onConversationGroupMemberDeletedList<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.