Junior — Middle
Meg tudná magyarázni az InheritedWidget működési elvét Flutterben?
sobes.tech MI
Válasz az MI-től
A Flutter-ben az InheritedWidget-et az adatok lefelé történő továbbítására használják a widget-fa mentén anélkül, hogy ezeket explicit módon át kellene adni minden gyermek widget konstruktorán keresztül. Ez lehetővé teszi a gyermek widgetek számára, hogy hozzáférjenek közös adatokhoz, és automatikusan frissüljenek azok változásakor.
Működési elv:
- Az InheritedWidget tárolja azokat az adatokat, amelyekhez az leszármazottaknak hozzáférésük kell.
- A leszármazottak ezeket az adatokat a
of(context)metóduson keresztül érik el. - Ha az InheritedWidget-ben lévő adatok megváltoznak, a Flutter értesíti az összes, ettől függő widgetet, és azok újraépülnek.
Példa:
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;
}
}
// Használat:
// A szülő widgetben csomagoljuk be a fa szerkezetét a MyData-be
// A gyermek widgetekben az adatokat a MyData.of(context)?.counter segítségével érjük el
Így az InheritedWidget hatékonyan segít az állapot és az adatok megosztásában a widgetek között anélkül, hogy túlzott paraméterátadást kellene végezni.