跳到主要内容

引用回复

引用回复是一种允许用户引用或回复特定消息的功能。这提高了对话的连贯性和上下文理解,尤其在群聊中更为重要。

局限

引用回复功能目前有以下限制:

  • 引用深度仅支持一度,即只能引用回复原始消息。如果多重引用,只展示上一层被引消息内容。

使用方法

创建引用消息

Flutter IMKit 提供了完整的 UI 和逻辑处理来支持引用回复功能。用户可以通过长按消息触发菜单,选择"引用"选项。

在代码中,您可以通过 MessageInputProvider 设置要引用的消息:

Dart
// 设置要引用的消息
messageInputProvider.setReferenceMessage(message);

设置引用消息后,输入区域会显示引用的消息内容,用户可以输入回复内容并发送。

引用消息样式

IMKit 为引用消息提供了专门的气泡组件 RCKReferenceMessageBubble,显示引用内容和回复内容。您可以通过 BubbleConfig 中的 referenceStyleConfig 自定义引用消息的样式:

Dart
BubbleConfig(
referenceStyleConfig: RCKReferenceStyleConfig(
// 自定义引用消息样式
quoteColor: Colors.grey[300],
quoteLineColor: Colors.blue,
quoteLineWidth: 3,
quoteTextStyle: TextStyle(
color: Colors.grey[800],
fontSize: 14,
),
),
)

引用消息发送

当用户在设置了引用消息的状态下发送文本时,IMKit 会自动创建引用消息,并通过内部的 sendMessage 方法发送:

Dart
// 发送引用消息(由 IMKit 内部处理)
// 实际发送由 MessageInputProvider 触发,内部调用 ChatProvider 的 sendMessage 方法
Future<void> sendMessage(RCIMIWMessage sendMessage, {IRCIMIWSendMessageCallback? callback});

清除引用状态

当需要取消引用时,可以调用:

Dart
// 清除引用状态
messageInputProvider.clearReferenceMessage();

引用消息功能增强了对话的连贯性,使用户能够更清晰地表达自己的回复针对的是哪条消息,特别适用于群聊等复杂对话场景。