跳至主要内容

添加 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;
}

如果需要多字段自动填充支持,可以使用 AutofillGroup 组件作为通用的 AutofillScope。要获取文本输入最近的 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