Saltar al contenido principal

El widget Visibility ya no es enfocable por defecto cuando maintainState está habilitado

El widget Visibility por defecto ya no retiene implícitamente la capacidad de enfoque para su hijo cuando maintainState está habilitado.

Resumen

#

Este cambio se introdujo para solucionar un problema donde los hijos ocultos de un IndexedStack podían enfocarse con eventos de teclado (ver issue) debido al comportamiento predeterminado del widget Visibility subyacente.

Descripción del cambio

#

El cambio principal es que el widget Visibility ya no es enfocable por defecto cuando maintainState está habilitado. Se debe establecer una nueva bandera, maintainFocusability, en true junto con maintainState para que un widget oculto siga siendo enfocable.

Guía de migración

#

Si tu aplicación tiene un widget Visibility que no establece maintainState en true, entonces no se requieren cambios.

Si tu aplicación tiene un widget Visibility que establece maintainState en true y dependías del comportamiento predeterminado anterior que te permitía enfocar tu widget oculto, necesitarás establecer maintainFocusability en true.

Código antes de la migración:

dart
child: Visibility(
    maintainState: true,
    child: SomeWidget(),
)

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

dart
child: Visibility(
    maintainState: true,
    maintainFocusability: true,
    child: SomeWidget(),
)

Timeline

#

Introducido en la versión: 3.34.0-pre
En la versión estable: 3.35

Referencias

#

Documentación de la API:

Issues relevantes:

PRs relevantes: