Ce sunt GlobalKeys în Flutter și cum sunt utilizate?
sobes.tech AI
Răspuns de la AI
GlobalKey este o cheie unică care identifică un widget în întreaga ierarhie a aplicației.
Este utilizată pentru:
-
Accesarea stării widget-ului: Permite accesul la starea unui StatefulWidget din orice loc din arborele de widget-uri.
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); } } // ... undeva în altă parte: myWidgetKey.currentState?.updateText("Updated"); -
Salvarea stării widget-ului atunci când își schimbă poziția în arbore: Util pentru mutarea widget-ului într-o altă parte a UI-ului, păstrând starea sa.
GlobalKey keyForMovableWidget = GlobalKey(); // ... Widget movableWidget = Container( key: keyForMovableWidget, color: Colors.blue, width: 100, height: 100, ); // La mutarea movableWidget în altă parte a arborelui, // starea sa va fi păstrată datorită GlobalKey. -
Apelarea metodelor widget-ului: Permite apelarea metodelor publice ale widget-ului din exterior.
GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>(); // ... Scaffold( key: scaffoldKey, // ... ); // ... undeva în altă parte: scaffoldKey.currentState?.openDrawer();
Este important să rețineți că utilizarea frecventă a GlobalKey poate complica arborele de widget-uri și poate îngreuna depanarea. În cele mai multe cazuri, este preferabil să utilizați alte mecanisme de gestionare a stării, cum ar fi Provider, Riverpod sau Bloc. GlobalKey trebuie utilizat numai atunci când alte abordări nu sunt aplicabile.