Junior — Middle
Czy możesz wyjaśnić zasadę działania InheritedWidget w Flutter?
sobes.tech AI
Odpowiedź od AI
InheritedWidget w Flutterze jest używany do przekazywania danych w dół drzewa widżetów bez konieczności jawnego przekazywania ich przez konstruktory każdego widżetu potomnego. Pozwala to widżetom potomnym na dostęp do wspólnych danych i automatyczne ich odświeżanie przy zmianie.
Zasada działania:
- InheritedWidget przechowuje dane, które mają być dostępne dla potomków.
- Potomkowie uzyskują dostęp do tych danych za pomocą metody
of(context). - Jeśli dane w InheritedWidget ulegną zmianie, Flutter powiadamia wszystkie widżety zależne od niego i są one przebudowywane.
Przykład:
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;
}
}
// Użycie:
// W widgetcie rodzicu opakować drzewo w MyData
// W widgetach potomnych uzyskać dane przez MyData.of(context)?.counter
W ten sposób InheritedWidget pomaga efektywnie dzielić stan i dane między widżetami bez nadmiernego przekazywania parametrów.