概述

#

TextInputClient 接口中添加了 insertContent 方法,以允许 Android 的图片键盘功能将内容插入到 Flutter 的 TextField 中。

背景

#

从 Android 7.1 开始,IME(输入法编辑器或虚拟键盘)可以将图片和富媒体内容发送到文本编辑器。这允许用户将 GIF、贴纸或上下文相关的富媒体内容插入到文本字段中。

变更说明

#

当用户在 IME 中插入富媒体内容时,平台会发送一个 TextInputClient.commitContent 通道消息,通知 Dart 代码 IME 插入了富媒体内容。该通道消息以 JSON 形式包含插入内容的 MIME 类型、URI 和字节数据。

迁移指南

#

如果您之前实现了 TextInputClient 接口,请重写 insertContent 以支持富媒体内容插入或提供一个空的实现。

要迁移,请实现 insertContent

迁移前的代码

dart
class MyCustomTextInputClient implements TextInputClient {
  // ...
}

迁移后的代码

dart
class MyCustomTextInputClient implements TextInputClient {
  // ...
  @override
  void insertContent() {
    // ...
  }
  // ...
}

您的 TextInputClient 实现可能不需要接收从 IME 插入的富媒体内容。在这种情况下,您可以将 insertContent 的实现留空,没有不良后果。

dart
class MyCustomTextInputClient implements TextInputClient {
  // ...
  @override
  void insertContent() {}
  // ...
}

作为替代方案,您可以使用与默认 TextInputClient 类似的实现。要了解如何操作,请查看 insertContent 的实现

为防止接口出现破坏性变更,请使用 with TextInputClient 而不是 implements TextInputClient

时间线

#

版本落地:3.8.0-1.0.pre
稳定版本:3.10.0

参考资料

#

API 文档

相关议题

相关 PR