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.