it-swarm-es.tech

Mover el enfoque de accesibilidad mediante programación

¿Es posible mover el foco de accesibilidad (VoiceOver para iOS y Talkback para Android) a un widget definido al presionar un botón?

He intentado buscar en paquete semántico pero no puedo encontrar una manera de obtener esto.

Sería suficiente también hacer que el lector de pantalla reinicie el árbol semántico desde el principio.

Tengo un PageView con 3 páginas y botones para avanzar/retroceder usando un PageController. Me gustaría mover el foco al comienzo de la página cuando esto cambie usando el botón (que invoca _pageController.animateToPage).

11
LorenzOliveto

Actualmente no hay una manera de hacer esto en Flutter. El enfoque de entrada y el enfoque de accesibilidad son dos cosas diferentes. Mucha gente parece sugerir esto:

FocusScope.of(context).requestFocus(_myFocusNode);

El problema es que esto solo cambia el foco de entrada. El enfoque de accesibilidad, que es el cuadro verde/azul/negro proporcionado por TalkBack y Voiceover, no cambia.

Es por eso que puede verificar el enfoque con una declaración de impresión, pero el cuadro no se ha movido.

A partir de ahora no hay forma de cambiar el enfoque de accesibilidad en Flutter. Esta es una supervisión masiva y un gran obstáculo para crear aplicaciones verdaderamente accesibles.

EDIT En aras de la exhaustividad, encontré una solución fea para esto.

Si cambia el foco a un campo de formulario, como un campo de texto, el foco de accesibilidad también se actualizará.

En mi caso, estoy usando un FlatButton que prácticamente no tiene estilo. Obviamente, entonces tienes que hacer que ese botón haga algo, pero al menos te lleva al vecindario de donde quieres estar.

Hacky Absolutamente, pero en lugar de mejores opciones, esto es lo que tengo en este momento.

0
ragingprog