Sobes.tech
Junior — Middle

Popište hlavní fáze práce s InheritedWidget a jeho roli v řízení stavu ve Flutteru.

sobes.tech AI

Odpověď od AI

InheritedWidget v Flutteru se používá k předávání dat dolů po stromu widgetů bez nutnosti je explicitně předávat přes konstruktory.

Hlavní kroky a role:

  1. Vytvoření vlastního InheritedWidget — vytvoří se třída, která dědí z InheritedWidget, a ukládá potřebná data.
  2. Aktualizace dat — při změně dat se volá metoda updateShouldNotify, která oznamuje, zda je třeba aktualizovat závislé widgety.
  3. Přístup k datům z dceřiných widgetů — dceřiné widgety získávají data přes statickou metodu of(context), která hledá nejbližší instanci InheritedWidget v stromu.
  4. Automatická aktualizace — pokud se data změní a updateShouldNotify vrátí true, Flutter překreslí všechny widgety závislé na tomto InheritedWidget.

Tímto způsobem InheritedWidget hraje klíčovou roli v řízení stavu, umožňuje efektivní sdílení dat mezi widgety bez složité předávání parametrů a zajišťuje reaktivní aktualizaci UI při změně stavu.

Příklad použití:

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) => counter != oldWidget.counter;
}