Junior — Middle
Kas saaksite selgitada InheritedWidget tööpõhimõtet Flutteris?
sobes.tech AI
Vastus AI-lt
Flutter'is InheritedWidget kasutatakse andmete edastamiseks allapoole widgetide puus ilma vajaduseta neid otseselt iga lapse widgeti konstruktorite kaudu edastada. See võimaldab lapse widgetidel pääseda ühistele andmetele ning automaatselt uuendada neid nende muutmisel.
Tööpõhimõte:
- InheritedWidget salvestab andmed, mis peavad olema kättesaadavad järeltulijatele.
- Järeltulijad pääsevad nendele andmetele ligi meetodi
of(context)kaudu. - Kui InheritedWidget'is olevad andmed muutuvad, teavitab Flutter kõiki sellest sõltuvaid widget'e ning need rekonstrueeritakse.
Näide:
class MyData extends InheritedWidget {
final int counter;
MyData({required this.counter, required Widget child}) : super(child: child);
static MyData? of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<MyData>();
}
@override
bool updateShouldNotify(MyData oldWidget) {
return oldWidget.counter != counter;
}
}
// Kasutus:
// Vanem widgetis ümbritsege puu MyData-ga
// Lapse widgetides saadakse andmed MyData.of(context)?.counter kaudu
Seega aitab InheritedWidget tõhusalt jagada olekut ja andmeid widget'ite vahel ilma liigse parameetrite edastamiseta.