Sobes.tech
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.