Sobes.tech
Junior — Middle

Czy możesz wyjaśnić, czym jest klasa InheritedWidget w Flutter i jak jest używana?

sobes.tech AI

Odpowiedź od AI

InheritedWidget w Flutterze to podstawowa klasa dla widżetów, które mogą przekazywać dane swoim potomkom w drzewie widżetów. Umożliwia efektywne dzielenie się stanem lub konfiguracją z widżetami potomnymi bez konieczności jawnego przekazywania danych przez konstruktory.

Jak to działa:

  • InheritedWidget przechowuje dane, które mogą być potrzebne potomkom.
  • Potomkowie mogą uzyskać dostęp do tych danych za pomocą metody of(context).
  • Gdy dane w InheritedWidget się zmieniają, Flutter automatycznie rysuje ponownie te widżety, które od nich zależą.

Przykład użycia:

class MyInheritedWidget extends InheritedWidget {
  final int data;

  MyInheritedWidget({required this.data, required Widget child}) : super(child: child);

  static MyInheritedWidget? of(BuildContext context) {
    return context.dependOnInheritedWidgetOfExactType<MyInheritedWidget>();
  }

  @override
  bool updateShouldNotify(MyInheritedWidget oldWidget) {
    return data != oldWidget.data;
  }
}

W ten sposób InheritedWidget służy jako podstawa do budowania reaktywnych i wydajnych systemów zarządzania stanem w Flutterze.