概述

#

TextInputClient 介面中添加了一個新的 getter TextInputClient.currentAutofillScope;所有 TextInputClient 的子類都必須提供 currentAutofillScope 的具體實現。

此 getter 允許 TextInputClient 觸發涉及多個邏輯上相連的輸入欄位的自動填充。例如,“使用者名稱”欄位可以觸發一個自動填充,該自動填充會同時填充它本身以及與其關聯的“密碼”欄位。

背景

#

在許多平臺上,自動填充服務能夠在一次自動填充嘗試中自動填充多個輸入欄位。例如,使用者名稱和密碼欄位通常可以一次性自動填充。出於這個原因,即將觸發自動填充的 Flutter 輸入欄位也應向平臺提供有關與之邏輯上相連的其他可自動填充輸入欄位的資訊。TextInputClient.currentAutofillScope 定義了與此 TextInputClient 邏輯上相連且可以一起自動填充的輸入欄位組。

變更說明

#

TextInputClient 現在有一個額外的 getter,用於返回此客戶端所屬的 AutofillScope。輸入客戶端使用此 getter 從同一範圍內的其他可自動填充輸入欄位收集與自動填充相關的資訊。

dart
abstract class TextInputClient {
  AutofillScope get currentAutofillScope;
}

如果在編譯 Flutter 應用時看到錯誤訊息“missing concrete implementation of 'getter TextInputClient.currentAutofillScope'”(缺少 'getter TextInputClient.currentAutofillScope' 的具體實現),請按照下面列出的遷移步驟進行操作。

遷移指南

#

如果您不打算為您的 TextInputClient 子類新增多欄位自動填充支援,只需在 getter 中返回 null 即可。

dart
class CustomTextField implements TextInputClient {
  // Not having an AutofillScope does not prevent the input field
  // from being autofilled. However, only this input field is
  // autofilled when autofill is triggered on it.
  AutofillScope get currentAutofillScope => null;
}

如果需要多欄位自動填充支援,一個常用的 AutofillScopeAutofillGroup widget。要獲取離文字輸入最近的 AutofillGroup widget,請使用 AutofillGroup.of(context)

dart
class CustomTextFieldState extends State<CustomTextField> implements TextInputClient {
  AutofillScope get currentAutofillScope => AutofillGroup.of(context);
}

有關更多資訊,請參閱 AutofillGroup

時間線

#

釋出版本:1.18.0
穩定版本中:1.20

參考資料

#

API 文件

相關議題

相關 PR