跳至主要內容

新增 TextInputClient.currentAutofillScope 屬性

摘要

#

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'」,請按照下方列出的遷移步驟操作。

遷移指南

#

如果您不打算在您的 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 小工具。要取得最接近文字輸入的 AutofillGroup 小工具,請使用 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