რა არის GlobalKeys Flutter-ში და როგორ გამოიყენება?
sobes.tech AI
პასუხი AI-სგან
GlobalKey არის უნიკალური გასაღები, რომელიც იდენტიფიცირებს ვიჯეტს მთელი აპლიკაციის ჰიერქიაში.
გამოყენება:
-
ვიჯეტის სტატესის წვდომა: Позволяет получить доступ к 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); } } // ... სხვა ადგილას: myWidgetKey.currentState?.updateText("Updated"); -
ვიჯეტის სტატესის შენახვა მისი მდებარეობის შეცვლისას: სასარგებლოა, როდესაც გსურთ ვიჯეტი გადაიტანოთ UI-ის სხვა ნაწილში, მისი მდგომარეობის შენარჩუნებით:
GlobalKey keyForMovableWidget = GlobalKey(); // ... Widget movableWidget = Container( key: keyForMovableWidget, color: Colors.blue, width: 100, height: 100, ); // როდესაც გადაადგილებთ movableWidget-ს სხვა ადგილას, მისი მდგომარეობა შენარჩუნდება GlobalKey-ის საშუალებით. -
ვიჯეტის მეთოდების გამოძახება: საშუალებას იძლევა გამოძახოთ პუბლიკური მეთოდები ვიჯეტიდან გარედან:
GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>(); // ... Scaffold( key: scaffoldKey, // ... ); // სხვა ადგილას: scaffoldKey.currentState?.openDrawer();
მნიშვნელოვანია, რომ ხშირად გამოყენება GlobalKey-ი შეიძლება გაართულოს ვიჯეტების ხე და გამარტივოს დებაგი. უმჯობესია, უმეტეს შემთხვევაში, გამოიყენოთ სხვა მექანიზმები, როგორიცაა Provider, Riverpod ან Bloc. GlobalKey-ს გამოიყენეთ მხოლოდ მაშინ, როდესაც სხვა მეთოდები არ არის შესაძლებელი.