Junior — Middle
Môžete vysvetliť princíp fungovania InheritedWidget vo Flutteri?
sobes.tech AI
Odpoveď od AI
V Flutteri sa InheritedWidget sa používá k přenosu dat dolů stromem widgetů bez nutnosti je explicitně předávat přes konstruktory každého potomka. To umožňuje potomkům přístup k sdíleným datům a jejich automatické aktualizace při změně.
Princip fungování:
- InheritedWidget uchovává data, která mají být dostupná potomkům.
- Potomci přistupují k těmto datům přes metodu
of(context). - Pokud se data v InheritedWidget změní, Flutter upozorní všechny widgety, které na ně závisí, a ty se přestavějí.
Příklad:
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;
}
}
// Použití:
// V rodičovském widgetu obalíme strom v MyData
// V dětských widgetech získáváme data přes MyData.of(context)?.counter
Tímto způsobem InheritedWidget pomáhá efektivně sdílet stav a data mezi widgety bez nadměrného předávání parametrů.