Junior — Middle
Можете ли објаснити принцип рада InheritedWidget у Flutter-у?
sobes.tech АИ
Одговор од АИ
U Flutteru, InheritedWidget se koristi za prenos podataka naniže kroz stablo widgeta bez potrebe da ih eksplicitno prosleđujete kroz konstruktore svakog deteta. Ovo omogućava detetovim widgetima da pristupe zajedničkim podacima i automatski se osvežavaju kada se oni promene.
Princip rada:
- InheritedWidget čuva podatke koji treba da budu dostupni potomcima.
- Potomci pristupaju tim podacima putem metode
of(context). - Ako se podaci u InheritedWidget promene, Flutter obaveštava sve widgete koji zavise od njega i oni se ponovo grade.
Primer:
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;
}
}
// Upotreba:
// U roditeljskom widgetu, obmotajte stablo u MyData
// U decom widgetima, pristupite podacima putem MyData.of(context)?.counter
Na ovaj način, InheritedWidget pomaže efikasnom deljenju stanja i podataka između widgeta bez prekomernog prosleđivanja parametara.