Sobes.tech
Junior — Middle

Ar galite paaiškinti InheritedWidget veikimo principą Flutter?

sobes.tech AI

Atsakymas iš AI

Flutter'yje InheritedWidget naudojamas duomenų perdavimui žemyn per widgetų medį be būtinybės juos aiškiai perduoti per kiekvieno vaiko widgeto konstruktorius. Tai leidžia vaikų widgetams pasiekti bendrus duomenis ir automatiškai atnaujinti juos jų pakeitus.

Veikimo principas:

  • InheritedWidget saugo duomenis, kurie turi būti prieinami palikuonims.
  • Palikuonys prieina prie šių duomenų naudodami of(context) metodą.
  • Jei duomenys InheritedWidget pasikeičia, Flutter informuoja visus su juo priklausomus widgetus, ir jie perstatomi.

Pavyzdys:

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

// Naudojimas:
// Tėvinio widget'o viduje apvyniokite medį su MyData
// Vaiko widgetuose gaunate duomenis per MyData.of(context)?.counter

Taip, InheritedWidget padeda efektyviai dalintis būsena ir duomenimis tarp widgetų be perteklinio parametrų perdavimo.