浏览 SDKs · Flutter
平台
SDKsFlutter

获取会话列表

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

复制

会话列表属于当前登录用户。每条 ConversationInfo 都包含会话标识、未读数、最后一条消息、置顶和草稿等状态。分页读取会话列表,第一页从 offset: 0 开始:

参数说明

参数类型是否必填说明
offsetint是从零开始的分页偏移量;刷新列表时重置为 0。
countint是本页期望拉取的会话数量。
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;
}

返回结果

Future 成功返回当前页的 List<ConversationInfo> 会话列表。后续加载时按已请求的条目数量推进 offset;客户端以 conversationID 为合并标识进行去重与增量合并。若返回数量小于 count,说明已拉取至列表末尾;下拉刷新时应重置分页偏移量为 0。

保持列表同步

分页查询操作仅获取调用时的快照数据,不会触发事件回调。实时状态变化应通过应用唯一的 OnConversationListener 进行监听维护:

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

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

onNewConversation 和 onConversationChanged 均携带变更的 List<ConversationInfo> 列表,客户端统一以 conversationID 作为合并标识更新本地列表。组合 listener 与唯一设置入口请参考事件概览。

请注意:不要用已加入群组列表替代会话列表。用户可能已加入群组但尚未产生对应会话条目,也可能在退出群组后仍保留本地历史会话记录。