Sobes.tech
Junior — Middle

Môžete vysvetliť princíp fungovania InheritedWidget vo Flutteri?

sobes.tech AI

Odpoveď od AI

V Flutteri sa InheritedWidget sa používá k přenosu dat dolů stromem widgetů bez nutnosti je explicitně předávat přes konstruktory každého potomka. To umožňuje potomkům přístup k sdíleným datům a jejich automatické aktualizace při změně.

Princip fungování:

  • InheritedWidget uchovává data, která mají být dostupná potomkům.
  • Potomci přistupují k těmto datům 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 v MyData
// V dětských widgetech 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ů.