会话列表的基本设置

大约 2 分钟

会话列表的基本设置

本文介绍如何通过 ConversationsView 实现会话列表的基本设置,包括会话列表空白页面和设置会话事件监听。

基本设置

使用示例

ConversationsView 提供了丰富的参数,支持以下会话自定义设置。使用示例如下:

ConversationsView(
  enableAppBar: true,
  appBarModel: ChatUIKitAppBarModel(
    title: '消息',
    showBackButton: true,
    onBackButtonPressed: () {
      Navigator.of(context).pop();
    },
  ),
  enableSearchBar: true,
  searchBarHideText: '搜索',
  emptyBackground: CustomEmptyWidget(),
  itemBuilder: (context, model) {
    // 自定义会话项
    return null; // 返回 null 使用默认渲染
  },
  onItemTap: (context, info) {
    // 点击会话项
  },
  onItemLongPressHandler: (context, info, menuItems) {
    // 长按会话项
    return menuItems;
  },
  controller: customController,
)

参数列表

ConversationsView 提供的主要参数如下表所示:

参数类型描述
enableAppBarbool是否显示默认的标题栏 ChatUIKitAppBar
- (默认) true:是。
- false: 否。
详见 设置页面标题栏
appBarModelChatUIKitAppBarModel?设置标题栏的模型,包含标题等。
详见 设置页面标题栏
enableSearchBarbool设置是否使用搜索栏,默认为 true
searchBarHideTextString?设置搜索栏的占位文本。
itemBuilderConversationItemBuilder?设置自定义的会话项构建器,默认为 ChatUIKitConversationListViewItem
onItemTapvoid Function(BuildContext, ConversationItemModel)?设置会话条目点击事件监听器。
onItemLongPressHandlerConversationsViewItemLongPressHandler?设置会话条目长按事件监听器。
emptyBackgroundWidget?设置会话列表的空白页面。
controllerConversationListViewController?设置会话列表控制器,如果不设置会自动创建。
beforeWidgetsList<Widget>?会话列表之前的组件列表。
afterWidgetsList<Widget>?会话列表之后的组件列表。
onSearchTapvoid Function(List<ConversationItemModel>)?点击搜索按钮的回调。

默认会话操作

长按会话条目会显示会话操作菜单。会话列表页面使用 ConversationListViewController 中提供的方法默认实现以下操作:

会话操作描述
会话免打扰- makeSilentForConversation():设置会话免打扰。
- cancelSilentForConversation():取消会话免打扰。
会话置顶- pinConversation():置顶会话。
- unpinConversation():取消置顶。
会话标记已读makeConversationRead():标记会话为已读状态。
会话删除deleteConversation():删除会话。

设置会话列表空页面

ConversationsView 提供 emptyBackground 参数设置会话列表的空白页面。

ConversationsView(
  emptyBackground: Center(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Icon(Icons.chat_bubble_outline, size: 80),
        SizedBox(height: 16),
        Text('暂无会话'),
      ],
    ),
  ),
)

设置事件监听

ConversationsView 提供针对会话条目及长按菜单的事件监听配置。建议通过参数进行统一设置。

ConversationsView(
  onItemTap: (context, info) {
    // 点击会话项
    print('Conversation tapped: ${info.profile.id}');
  },
  onItemLongPressHandler: (context, info, menuItems) {
    // 长按会话项,可以修改菜单项
    return menuItems;
  },
  onSearchTap: (data) {
    // 点击搜索按钮
    Navigator.of(context).push(
      MaterialPageRoute(
        builder: (context) => SearchPage(conversations: data),
      ),
    );
  },
)
参数描述
onItemTap设置会话条目点击事件监听器。
onItemLongPressHandler设置会话条目长按事件监听器。
onSearchTap设置搜索按钮点击事件监听器。
上次编辑于: