跳到主要内容

编辑消息

Flutter IMKit 支持编辑已发送成功的文本消息和引用消息。用户长按自己发送的消息选择“编辑”,在编辑输入区修改内容并提交;更新过程中、成功和失败状态会在原消息气泡中反馈。

底层消息修改、引用消息刷新和编辑草稿接口请参考 Flutter IMLib 消息修改

提示
  • Flutter IMKit 的消息编辑能力从 Flutter IMLib 5.26.0 开始支持。
  • 使用此功能需要开通单群聊消息云端存储服务。
  • 消息编辑默认关闭,需要同时打开应用级和会话页开关。
  • 是否仍在有效编辑时间内由服务端和 Flutter IMLib 判断,Flutter IMKit 不伪造有效期。
  • 阅后即焚消息、非本人消息、发送中或失败消息不可编辑。

打开编辑消息

在根组件创建 RongCloudAppProviders 时打开应用级开关:

Dart
RongCloudAppProviders.of(
child,
messageEditOptions: const RCKMessageEditOptions(enabled: true),
);

当前聊天页还需要打开页面级配置:

Dart
RCKChatPage(
conversation: conversation,
config: RCKChatPageConfig(
messageEditConfig: const RCKMessageEditConfig(enabled: true),
),
)

未打开应用级开关时,页面配置不会启用编辑入口。应用级开关关闭后,Kit 会清理编辑状态、草稿和相关监听。

使用限制

默认只允许编辑:

  • 单聊或群聊中的文本消息、引用消息;
  • 当前用户发送成功且有消息 UID 的消息;
  • 未过服务端配置的编辑有效期,且不是阅后即焚消息。

图片、语音、视频、文件、位置、自定义消息和系统通知不提供编辑入口。编辑引用消息时,Kit 保留引用关系,并按当前消息状态显示被引用消息已删除或已撤回的提示。

自定义输入和状态

RCKMessageEditConfig 可配置 inputConfigstatusConfigstrings

Dart
RCKMessageEditConfig(
enabled: true,
inputConfig: const RCKMessageEditInputConfig(maxLength: 2000),
statusConfig: const RCKMessageEditStatusConfig(),
strings: const RCKMessageEditStrings(
title: '修改消息',
edited: '已修改',
),
)

输入区域支持表情、取消、完成和全屏编辑;空内容、超出 maxLength 或正在提交时不能完成。状态组件会显示“更新中”“已编辑”或失败重试提示。消息列表和会话列表在功能开启时使用修改后的正文。