Mis on GlobalKeys Flutteris ja kuidas neid kasutatakse?
sobes.tech AI
Vastus AI-lt
GlobalKey on unikaalne võti, mis identifitseerib vidjeti kogu rakenduse hierarhias.
Kasutamine:
-
Vidjeti staatuse juurdepääs: Позволяет получить доступ к StatefulWidget State из любого места в дереве виджетов.
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); } } // ... kusagil mujal: myWidgetKey.currentState?.updateText("Updated"); -
Vidjeti staatuse säilitamine selle asukoha muutmisel hierarhias: Kasulik, kui vaja on vidjet teisaldada teise UI ossa, säilitades selle staatuse:
GlobalKey keyForMovableWidget = GlobalKey(); // ... Widget movableWidget = Container( key: keyForMovableWidget, color: Colors.blue, width: 100, height: 100, ); // Kui teisaldate movableWidget teise kohta hierarhias, // selle staatus säilib GlobalKey abil. -
Vidjeti meetodite väljakutse: võimaldab väljast kutsuda vidjeti avalikke meetodeid:
GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>(); // ... Scaffold( key: scaffoldKey, // ... ); // kuskil mujal: scaffoldKey.currentState?.openDrawer();
Oluline on meeles pidada, et GlobalKey kasutamine võib keerulisemaks muuta vidjetite puu ning raskendada silumist. Enamasti on parem kasutada muid seisundi haldamise mehhanisme, nagu Provider, Riverpod või Bloc. GlobalKey tuleks kasutada ainult siis, kui teised lähenemised ei ole rakendatavad.