Sobes.tech
Junior — Middle

Kas saaksite selgitada InheritedWidget tööpõhimõtet Flutteris?

sobes.tech AI

Vastus AI-lt

Flutter'is InheritedWidget kasutatakse andmete edastamiseks allapoole widgetide puus ilma vajaduseta neid otseselt iga lapse widgeti konstruktorite kaudu edastada. See võimaldab lapse widgetidel pääseda ühistele andmetele ning automaatselt uuendada neid nende muutmisel.

Tööpõhimõte:

  • InheritedWidget salvestab andmed, mis peavad olema kättesaadavad järeltulijatele.
  • Järeltulijad pääsevad nendele andmetele ligi meetodi of(context) kaudu.
  • Kui InheritedWidget'is olevad andmed muutuvad, teavitab Flutter kõiki sellest sõltuvaid widget'e ning need rekonstrueeritakse.

Näide:

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;
  }
}

// Kasutus:
// Vanem widgetis ümbritsege puu MyData-ga
// Lapse widgetides saadakse andmed MyData.of(context)?.counter kaudu

Seega aitab InheritedWidget tõhusalt jagada olekut ja andmeid widget'ite vahel ilma liigse parameetrite edastamiseta.