Junior — Middle
Můžete vysvětlit princip fungování InheritedWidget ve Flutteru?
sobes.tech AI
Odpověď od AI
V Flutteru se InheritedWidget používá k přenosu dat dolů po stromu widgetů bez nutnosti je explicitně předávat přes konstruktory každého potomka. To umožňuje potomkům přístup ke sdíleným datům a jejich automatickou aktualizaci při změně.
Princip fungování:
- InheritedWidget uchovává data, která mají být dostupná potomkům.
- Potomci k těmto datům přistupují 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 widgetem MyData
// V potomcích 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ů.