Sobes.tech
Junior — Middle

Flutter'da InheritedWidget'in çalışma prensibini açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Flutter'da InheritedWidget, her bir çocuk widget'ın yapıcıları aracılığıyla açıkça iletmek zorunda kalmadan verileri ağaç boyunca aşağı doğru iletmek için kullanılır. Bu, çocuk widget'ların ortak verilere erişmesini ve bunlar değiştiğinde otomatik olarak güncellenmesini sağlar.

Çalışma prensibi:

  • InheritedWidget, alt sınıfların erişmesi gereken verileri tutar.
  • Alt sınıflar, bu verilere of(context) yöntemiyle erişir.
  • Eğer InheritedWidget'taki veriler değişirse, Flutter bu widget'a bağımlı tüm widget'ları bilgilendirir ve yeniden oluştururlar.

Örnek:

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

// Kullanım:
// Ebeveyn widget'ta ağaç MyData ile sarmalanır
// Çocuk widget'larda, veriye MyData.of(context)?.counter ile erişilir

Bu şekilde, InheritedWidget, durum ve verilerin widget'lar arasında verimli bir şekilde paylaşılmasına yardımcı olur, gereksiz parametre iletimi olmadan.