消息未读数
未读消息计 数是 IMKit 默认提供的一项功能,可告知用户每个会话中未读消息的数量。如果未读消息数超过 100 条,则会显示为 99+
。
功能效果
消息未读数功能主要包括以下几个方面:
- 会话列表中显示每个会话的消息未读数数量
- 应用图标或返回按钮上显示总消息未读数数量
- 特殊类型消息(如@消息)的未读提醒
- 进入会话自动清除未读状态
使用方法
会话列表中的未读计数
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) {
// 显示@消息提醒
}
通过消息未读数功能,用户可以清晰地了解各个会话的新消息情况,提高消息处理效率。