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