Sobes.tech
Junior — Middle

Puteți explica principiul de funcționare al InheritedWidget în Flutter?

sobes.tech AI

Răspuns de la AI

InheritedWidget în Flutter este utilizat pentru a transmite date în jos pe arborele de widget-uri fără a fi nevoie să le transmită explicit prin constructorii fiecărui widget copil. Acest lucru permite widget-urilor copil să acceseze date comune și să se actualizeze automat atunci când acestea se schimbă.

Principiul de funcționare:

  • InheritedWidget stochează datele care trebuie să fie accesibile descendenților.
  • Descendenții accesează aceste date prin metoda of(context).
  • Dacă datele din InheritedWidget se schimbă, Flutter notifică toate widget-urile care depind de acesta și acestea sunt reconstruite.

Exemplu:

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

// Utilizare:
// În widget-ul părinte, înfășurați arborele în MyData
// În widget-urile copil, obțineți datele prin MyData.of(context)?.counter

Astfel, InheritedWidget ajută la partajarea eficientă a stării și datelor între widget-uri fără transmitere excesivă de parametri.