摘要

#

TextInputClient 介面中新增了 insertContent 方法, 允許 Android 的圖片鍵盤功能 將內容插入到 Flutter TextField 中。

背景

#

自 Android 7.1 起,IME(輸入法編輯器或虛擬鍵盤)可以將 圖片與豐富內容傳送到文字編輯器。 這讓使用者能夠在文字欄位 (text field) 中插入 gif、貼圖, 或是與情境相關的豐富內容。

變更說明

#

當使用者在 IME 中插入豐富內容時,平台會 傳送 TextInputClient.commitContent 通道訊息, 通知 Dart 程式碼 IME 已插入豐富內容。 該通道訊息會以 JSON 形式包含 插入內容的 mime type、URI 及 bytedata。

遷移指南

#

如果你之前有實作 TextInputClient 介面,請覆寫 insertContent,以支援豐富內容插入 或提供一個空的實作。

要進行遷移,請實作 insertContent

遷移前的程式碼:

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

遷移後的程式碼:

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

您的 TextInputClient 實作可能不需要從 IME 插入豐富內容(rich content)的能力。在這種情況下,您可以將 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: