Browse SDKs · Flutter
Platform
SDKsFlutterEnterprise

Conversation groups overview

Understand the data models, group types, and listener lifecycles of conversation groups in the OpenIM Flutter SDK.

Copy

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 OptionValueBehavior
ConversationGroupType.custom0Standard user-created custom group folder.
ConversationGroupType.preset1Preset folder managed by SDK or server-side rules.
ConversationGroupType.all2Filter 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

Listen for conversation group events

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