TEKNİK ÖZET(gpt):
Makalede, Flutter’ın build() metodunun çalışma prensipleri ve widget ağacının yeniden oluşturulması sürecinde karşılaşılan zorluklar ele alınmaktadır. Yazar, setState() çağrıldığında Flutter’ın ilgili widget’ları yeniden oluşturduğunu ve bunun beklenen bir davranış olduğunu vurgulamaktadır.
Kullanılan Teknolojiler / Framework’ler:
•Flutter: Google tarafından geliştirilen UI toolkit.
Çözülmek İstenen Problem:
Widget ağacının gereksiz yere yeniden oluşturulması sonucu performans düşüşleri ve beklenmeyen davranışlar.
Sunulan Çözüm / Yaklaşım:
•const Kullanımı: Değişmeyen widget’ları const anahtar kelimesiyle tanımlayarak, gereksiz yeniden oluşturulmaların önüne geçmek.
•Widget’ları Ayırma: Bileşenleri daha küçük widget’lara bölerek, sadece gerekli kısımların yeniden oluşturulmasını sağlamak.
•Key Kullanımı: Widget’lara Key atayarak, özellikle listeler gibi dinamik yapılarda, Flutter’ın widget’ları doğru şekilde eşleştirmesini sağlamak.
Koddan Alınabilecek İpuçları:
•const Kullanımı:
const MyHeavyWidget() // Bu widget yeniden oluşturulmaz.
•Widget Ayırma:
class CounterText extends StatelessWidget {
final int counter;
const CounterText(this.counter, {super.key});
@override
Widget build(BuildContext context) {
print("⏱️ CounterText yeniden oluşturuldu");
return Text('$counter');
}
}
•Key Kullanımı:
ListView.builder(
itemCount: myItems.length,
itemBuilder: (_, i) => MyItemWidget(
key: ValueKey(myItems[i].id),
item: myItems[i],
),
);
Benim Projelerime Katabilecekleri:
•Performans Artışı: Gereksiz widget yeniden oluşturulmalarını engelleyerek uygulama performansını artırabilir.
•Daha Temiz Kod: Widget’ları küçük ve yönetilebilir parçalara ayırarak kodun okunabilirliğini ve bakımını kolaylaştırabilir.
•Hata Azaltma: Key kullanımıyla, özellikle dinamik listelerde, beklenmeyen davranışların önüne geçebilir.
Daha detaylı bilgi için makalenin tamamını inceleyebilirsiniz: Why Flutter’s build() Method Broke My Brain (Until It Didn’t)