Saltar al contenido principal

Desaprobar SemanticsProperties.focusable y SemanticsConfiguration.isFocusable

El parámetro `focusable` ha sido reemplazado por `isFocused`.

Resumen

#

Los parámetros SemanticsProperties.focusable y SemanticsConfiguration.isFocusable fueron deprecados en favor de los parámetros SemanticsProperties.focused y SemanticsConfiguration.isFocused.

El parámetro focused ahora admite valores nulos. Establecerlo en true o false establece automáticamente isFocusable en true, mientras que establecerlo en null establece isFocusable en false.

Contexto

#

La propiedad SemanticsConfiguration.isFocusable es un booleano que indica si el nodo semántico puede tener el foco de entrada. SemanticsConfiguration.isFocused es un booleano que indica si el nodo semántico tiene el foco de entrada.

Este cambio también se aplica a SemanticsProperties.focusable y SemanticsProperties.focused.

Deprecamos isFocusable porque su funcionalidad está cubierta por isFocused. La propiedad isFocused ahora se almacena como una bandera de tres estados en el motor, y este cambio hace que el framework sea consistente con el motor.

Descripción del cambio

#

La propiedad SemanticsConfiguration.isFocusable está deprecada en favor de SemanticsConfiguration.isFocused. Esta propiedad es un booleano que admite valores nulos; establecerla en true o false automáticamente establece isFocusable en true, y establecerla en null establece isFocusable en false.

Guía de migración

#

Reemplaza SemanticsConfiguration.isFocusable con SemanticsConfiguration.isFocused.

Ejemplo 1: Establecer isFocused en true establece automáticamente isFocusable en true

#

Código antes de la migración:

dart
void describeSemanticsConfiguration(SemanticsConfiguration config) {
  config.isFocusable = true;
  config.isFocused = true;
}

Código después de la migración:

dart
void describeSemanticsConfiguration(SemanticsConfiguration config) {
  config.isFocused = true;
}

Ejemplo 2: Establecer isFocused en null establece automáticamente isFocusable en false

#

Código antes de la migración:

dart
void describeSemanticsConfiguration(SemanticsConfiguration config) {
  config.isFocusable = false;
  config.isFocused = false;
}

Código después de la migración:

dart
void describeSemanticsConfiguration(SemanticsConfiguration config) {
  config.isFocused = null;
}

Timeline

#

Introducido en la versión: 3.37.0-0.0.pre
En la versión estable: 3.38

Referencias

#

Documentación de la API:

Problema relevante:

PR relevante: