跳到主要内容

消息未读数

未读消息计数是 IMKit 默认提供的一项功能,可告知用户每个会话中未读消息的数量。如果未读消息数超过 100 条,则会显示为 99+

功能效果

消息未读数功能主要包括以下几个方面:

  1. 会话列表中显示每个会话的消息未读数数量
  2. 应用图标或返回按钮上显示总消息未读数数量
  3. 特殊类型消息(如@消息)的未读提醒
  4. 进入会话自动清除未读状态

使用方法

会话列表中的未读计数

IMKit 在会话列表中自动显示消息未读数数量,通过 UnreadBadgeWidget 组件展示:

Dart
// 消息未读数数量显示组件
UnreadBadgeWidget(
conversation: conversation,
config: config.unreadBadgeConfig,
)

自定义消息未读数徽章

您可以通过 ConversationConfig 中的 unreadBadgeConfig 自定义消息未读数徽章的样式:

Dart
ConversationConfig(
unreadBadgeConfig: RCKUnreadBadgeConfig(
// 自定义背景颜色
backgroundColor: Colors.red,
// 自定义文本颜色
textColor: Colors.white,
// 自定义字体大小
fontSize: 12,
// 未读数超出99时显示的文本
overflowText: '99+',
// 徽章尺寸
width: 24,
height: 24,
// 徽章位置
position: ItemElementPosition.avatarTopRight,
),
)

自定义未读徽章构建器

如果默认的未读徽章不满足需求,您可以提供自定义的构建器:

Dart
ConversationPage(
unreadBadgeBuilder: (context, conversation, config) {
// 返回自定义未读徽章组件
return Container(
// 自定义未读徽章实现
);
},
)

获取,修改消息未读数总数

Flutter IMKit 提供了获取未读消息总数的方法:

Dart
// 获取所有会话的消息未读数总数
final totalUnreadCount = engineProvider.totalUnreadCount;

// 更新消息未读数总数
engineProvider.updateTotalUnreadCount();

清除未读状态

当用户进入会话页面时,IMKit 会自动清除该会话的未读状态,Kit会调用以下方法:

Dart
// 清除当前会话的消息未读数数
chatProvider.clearUnread();

@ 消息提醒

IMKit 支持对 @ 消息进行特殊提醒,当用户被 @ 时,会在会话中显示特殊提示:

Dart
// 获取未读的@消息
chatProvider.fetchUnreadMentiondMessage();

// 使用未读@消息
if (chatProvider.unreadMentionedMessages?.isNotEmpty ?? false) {
// 显示@消息提醒
}

通过消息未读数功能,用户可以清晰地了解各个会话的新消息情况,提高消息处理效率。