浏览 SDKs · Flutter
SDKsFlutter

获取会话列表

使用 OpenIM Flutter SDK 分页获取当前用户的会话列表。

复制

会话列表属于当前登录用户。每条 ConversationInfo 都包含会话标识、未读数、最后一条消息、置顶和草稿等状态。使用分页接口读取会话,不要使用一次加载完整列表的接口。

分页获取会话

使用 getConversationListSplit() 分页获取会话。第一页从 offset: 0 开始。

const pageSize = 50;

Future<List<ConversationInfo>> loadConversationPage(int offset) async {
  final page = await OpenIM.iMManager.conversationManager
      .getConversationListSplit(offset: offset, count: pageSize);
  mergeConversations(page);
  return page;
}

参数说明

参数类型是否必填说明
offsetint必填从零开始的分页偏移量;刷新时重置为 0
countint必填本页期望返回的会话数量。

Future 成功后返回当前页的 List<ConversationInfo>。继续加载时按已经请求的条目数量推进 offset;按 conversationID 去重。返回数量小于 count 表示到达末尾,主动刷新时应清空分页状态并从 0 重载。

保持列表同步

getConversationListSplit() 只建立快照,不触发会话回调。以下处理函数应纳入应用唯一的 OnConversationListener

void handleNewConversations(List<ConversationInfo> conversations) {
  mergeConversations(conversations);
}

void handleConversationsChanged(List<ConversationInfo> conversations) {
  mergeConversations(conversations);
}

onNewConversationonConversationChanged 都携带 List<ConversationInfo>,应按 conversationID 合并。组合 listener 与唯一设置入口见事件概览

不要用已加入群组列表替代会话列表。用户可能已经加入群组但尚未产生对应会话,也可能退出群组后仍保留历史会话记录。