Flutter’da Stateless ve Stateful Widget’lar Arasındaki Farklar
Herkese selam ben Günseli. Flutter öğrenme sürecinde çoğu kişinin kafa karışıklığı yaşadığı Stateless ve Stateful Widget farkını bugün örnekleriyle birlikte sizlere açıklayacağım.
Önce widgetların ne olduğunu öğrenerek başlayalım.
Widget nedir?
Widgetlar, kullanıcıya sunulan grafik öğelerin (butonlar, metin kutuları, resimler vb.) temel yapı taşlarıdır. Ancak, widgetların nasıl yönetildiği ve durumlarının nasıl takip edildiği, geliştirme sürecinde önemli bir fark yaratabilir.
İki yaygın widget tipi, stateless (durumsuz) ve stateful (durumlu) widgetlardır. Bu yazıda, stateless ve stateful widgetları karşılaştırarak, her birinin ne olduğunu, nasıl çalıştığını ve hangi senaryolarda tercih edilebileceğini inceleyeceğiz.
Stateless (Durumsuz) Widget:
Eğer, kullanacağımız ekranda değişen herhangi bir yapımız yoksa bunu Stateless Widget kullanarak oluştururuz.
Stateless widgetlar bir kez oluşturduktan sonra içeriği ve durumu güncellenemeyen widgetlar olarak çalışır.
Gerçek hayattan bir örnek vermek gerekirse, Stateless widgetlar bir tabela veya bir afiş gibidir. Bir tabela, sabit bir mesaj veya bilgiyi sunar ve değişmeden kalır. İnsanlar tabela önünden geçer, içeriğini görür ve belki bilgiyi alırlar. Ancak tabela kendisi hiçbir şekilde değişmez, başlangıçta olduğu gibi sonunda da aynı mesajı sunar. Stateless widgetler da benzer şekilde, başlangıçta verilen verilerle bir kullanıcı arayüzünü oluşturur ve değişmezler.
Şimdi bir kod örneğiyle beraber inceleyelim:
Bu örnekte, HelloWorldWidget adında basit bir Stateless Widget tanımladık. Bu widget ekranda “Merhaba Dünya!” metnini görüntüler. Bu widget bir kez oluşturulduktan sonra durumu güncellenmeyen bir widgettır. Bu nedenle, stateless widget sadece statik içeriği göstermek için kullanılır.
Stateful (Durumsal) Widget:
Eğer, kullanacağımız ekranda widgetlarda değişiklik olacaksa bunu Stateful Widget kullanarak oluştururuz.
Stateful Widget bir satranç oyununa benzer. Burada birçok taş hareket ettirilirken, sadece bir taşın hareket ettirilmesi bile durum değişikliği gerektirmek için yeterlidir. Çok farklı değişikliklere ihtiyacınız yoktur. Sadece bir değişiklik, stateless widget’ınızı stateful widget’a dönüştürmek için yeterlidir. Stateless widget’ların ise hiçbir değişikliği yoktur.
Şimdi bir kod örneğiyle beraber inceleyelim:
Bu yazdığımız kodda “Metni güncelle” yazan butona tıkladığımızda metinimiz “Güncellenen Metin” olarak değişecektir.
- Kod, kendi değiştirilebilir durumunu yöneten
MyStatefulWidget
adında bir Flutter bileşeni tanımlar. - Bileşenin içinde, başlangıç metin değerini tutan
text
adında bir değişken bulunur. build
metodu, bileşenin kullanıcı arayüzünü oluşturmak içinScaffold
,Center
,Column
,Text
,SizedBox
veElevatedButton
bileşenlerini kullanır.- Düğme tıklandığında,
text
değişkeni güncellenir ve bileşenin yeniden oluşturulmasıyla yeni metin değeri görüntülenir.
Özetlemek gerekirse:
Eğer basit bir arayüz oluşturuyor ve ekranda güncellenecek bir veri yok ise Stateless widgetları tercih edebilirsiniz. Ancak, dinamik arayüzler, state yönetimi gerektiren durumlarda Stateful widgetları tercih etmek daha uygun olacaktır.
Bugün sizlere Stateless ve Stateful widgetların farkını açıklamaya çalıştım. Umarım faydalı olmuştur. Eğer yazımı beğendiyseniz beni takip edebilirsiniz. Bir sonraki yazıda görüşmek üzere!