¿Qué son las GlobalKeys en Flutter y cómo se utilizan?
sobes.tech AI
Respuesta de la IA
GlobalKey es una clave única que identifica un widget en toda la jerarquía de la aplicación.
Se utiliza para:
-
Acceso al estado del widget: Permite acceder al estado de un StatefulWidget desde cualquier lugar en el árbol de widgets.
GlobalKey<_MyWidgetState> myWidgetKey = GlobalKey(); // ... class MyWidget extends StatefulWidget { MyWidget({Key? key}) : super(key: key); @override _MyWidgetState createState() => _MyWidgetState(); } class _MyWidgetState extends State<MyWidget> { String _text = "Initial"; void updateText(String newText) { setState(() { _text = newText; }); } @override Widget build(BuildContext context) { return Text(_text); } } // ... en otra parte: myWidgetKey.currentState?.updateText("Updated"); -
Guardar el estado del widget al cambiar su ubicación en el árbol: Útil cuando necesitas mover un widget a otra parte de la UI, conservando su estado.
GlobalKey keyForMovableWidget = GlobalKey(); // ... Widget movableWidget = Container( key: keyForMovableWidget, color: Colors.blue, width: 100, height: 100, ); // Al mover movableWidget a otro lugar en el árbol, // su estado se conservará gracias a GlobalKey. -
Llamar a métodos del widget: Permite llamar a métodos públicos del widget desde fuera.
GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>(); // ... Scaffold( key: scaffoldKey, // ... ); // ... en otra parte: scaffoldKey.currentState?.openDrawer();
Es importante recordar que el uso frecuente de GlobalKey puede complicar el árbol de widgets y dificultar la depuración. En la mayoría de los casos, es preferible usar otros mecanismos de gestión de estado, como Provider, Riverpod o Bloc. GlobalKey debe usarse solo cuando otros enfoques no sean aplicables.