DEV Community

Cover image for Activar semanticsDebugger en Flutter
elena
elena

Posted on • Originally published at geekstorming.wordpress.com

Activar semanticsDebugger en Flutter

Hacer tus apps accesibles tiene muchísimas ventajas, entre las cuales se encuentra alcanzar a más personas que también son tu público objetivo. Si estás creando tu app con Flutter, puedes mejorar fácilmente apps para que sean mejores para lectores de pantalla.

¡Vamos allá!

En Flutter, tenemos una herramienta llamada semantics tree. Esto es nada más y nada menos que una forma de visualizar nuestras apps que nos muestra cómo se interpreta y recorre a través de lectores de pantalla, que son la forma que las personas invidentes pueden consumir productos digitales.

Le arrebata la parte más visual a los widgets en pantalla y lo muestra como contenedores con un texto. Este texto es la forma en la que va a ser consumido por los lectores de pantalla, que en una primera instancia, descubrirás que no es muy útil si te pones en la piel de una persona que no puede ver.

Esta representación se puede modificar para que el lector de pantalla ignore el widget en específico, cambiar el texto que muestra o definir que dos o más widgets deben ser leídos en conjunto… entre otras muchas características que pueden ser modificadas para mejorar la accesibilidad.

Captura de pantalla de código en Flutter junto a aplicación en ejecución a la derecha, mostrando cómo se visualiza el semantics tree en una aplicación sobre viajes

¿Y cómo se activa?

Flutter es un framework que tiene estas features integradas de forma nativa, y habilitar el semantics tree es muy sencillo:

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,

      // Habilitando el semantics debugger
      showSemanticsDebugger: true,

      theme: ThemeData(
        colorSchemeSeed: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}
Enter fullscreen mode Exit fullscreen mode

Fácil, ¿verdad?

Lo he habilitado pero no veo el semantics tree.

¿Este es tu caso? En mayo de 2024, descubrí que en las aplicaciones Flutter (versión 3.19.6) no estaban mostrando el semantics tree a la hora de añadir esa línea, y se lo comunicaba al equipo de desarrollo a través de un issue de GitHub.

La solución temporal o workaround es añadir, previa ejecución del widget principal, añadir la instrucción que vemos en la línea 3 del siguiente código:

void main() {
  // Forzando a mostrar semantics tree
  WidgetsFlutterBinding.ensureInitialized().ensureSemantics();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,

      // Habilitando el semantics debugger
      showSemanticsDebugger: true,

      theme: ThemeData(
        colorSchemeSeed: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}
Enter fullscreen mode Exit fullscreen mode

Con esto, podrás visualizar el semantics tree y empezar a usar los semantic widgets para hacer tus apps más accesibles. Espero que sea útil.

seeU!

Sentry blog image

The countdown to March 31 is on.

Make the switch from app center suck less with Sentry.

Read more

Top comments (0)

Sentry growth stunted Image

If you are wasting time trying to track down the cause of a crash, it’s time for a better solution. Get your crash rates to zero (or close to zero as possible) with less time and effort.

Try Sentry for more visibility into crashes, better workflow tools, and customizable alerts and reporting.

Switch Tools

👋 Kindness is contagious

Engage with a wealth of insights in this thoughtful article, valued within the supportive DEV Community. Coders of every background are welcome to join in and add to our collective wisdom.

A sincere "thank you" often brightens someone’s day. Share your gratitude in the comments below!

On DEV, the act of sharing knowledge eases our journey and fortifies our community ties. Found value in this? A quick thank you to the author can make a significant impact.

Okay