Saltar al contenido principal

Adición de la propiedad TextInputClient.currentAutofillScope

Se agregó un nuevo getter TextInputClient.currentAutofillScope a la interfaz TextInputClient para soporte de autofill.

Resumen

#

Se agregó un nuevo getter, TextInputClient.currentAutofillScope, a la interfaz TextInputClient; todas las subclases de TextInputClient deben proporcionar una implementación concreta de currentAutofillScope.

Este getter permite que el TextInputClient active un autofill que involucre múltiples campos de entrada conectados lógicamente. Por ejemplo, un campo "username" puede activar un autofill que se llene tanto a sí mismo como al campo "password" asociado con él.

Contexto

#

En muchas plataformas, los servicios de autofill son capaces de autocompletar múltiples campos de entrada en un solo intento de autofill. Por ejemplo, los campos de nombre de usuario y los campos de contraseña generalmente se pueden autocompletar de una sola vez. Por esta razón, un campo de entrada de Flutter que está a punto de activar el autofill también debería proporcionar a la plataforma información sobre otros campos de entrada autocompletables conectados lógicamente a él. TextInputClient.currentAutofillScope define el grupo de campos de entrada que están conectados lógicamente a este TextInputClient, y que se pueden autocompletar juntos.

Descripción del cambio

#

TextInputClient ahora tiene un getter adicional que devuelve el AutofillScope al que pertenece este cliente. Este getter es utilizado por el cliente de entrada para recopilar información relacionada con el autofill de otros campos de entrada autocompletables dentro del mismo ámbito.

dart
abstract class TextInputClient {
  AutofillScope get currentAutofillScope;
}

Si ves el mensaje de error "missing concrete implementation of 'getter TextInputClient.currentAutofillScope'" al compilar una aplicación Flutter, sigue los pasos de migración que se indican a continuación.

Guía de migración

#

Si no tienes planeado agregar soporte de autofill para múltiples campos a tu subclase TextInputClient, simplemente devuelve null en el getter:

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

Si se desea soporte para autocompletado multicampo, un AutofillScope común a utilizar es el Widget AutofillGroup. Para obtener el Widget AutofillGroup más cercano a la entrada de texto, usa AutofillGroup.of(context):

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

Para más información, consulta AutofillGroup.

Timeline

#

Introducido en la versión: 1.18.0
En la versión estable: 1.20

Referencias

#

Documentación de la API:

Problema relevante:

PR relevante: