Sobes.tech
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.