DEV Community

Gülsen Keskin
Gülsen Keskin

Posted on

Stateless widgets 💫 🌌 ✨

StatefulWidget ve StatelessWidget arasındaki fark tam adındadır.
Bir StatefulWidget kendi dahili durumunu (internal state) izler. StatelessWidget, widget'ın ömrü boyunca değişen herhangi bir dahili duruma sahip değildir. StatelessWidget yapılandırmasını veya hangi verileri görüntülediğini umursamaz. Durum bilgisi olmayan bir widget da değiştirilemez.

Uygulamanızda özel bir button widget'ı oluşturduğunuzu hayal edin. Belki de bir sonraki listede gösterildiği gibi her zaman Submit diyecektir.

class SubmitButton 
 extends StatelessWidget {
  Widget build(context) {
    return Button(
      child: Text('Submit'),
    );
  }
}
Enter fullscreen mode Exit fullscreen mode

Bu butonun bazı durumlarda Submit ve bazen de Update demesini istiyor olabilirsiniz. Buton sınıfını daha kullanışlı hale getirmek için, aşağıdaki listede gösterildiği gibi, Flutter'a buttonText'e göre oluşturmasını söyleyebilirsiniz.

class SubmitButton extends StatelessWidget {
  final String buttonText;
  SubmitButton(this.buttonText);

  Widget build(context) {
    return Button(
      child: Text(buttonText);
    );
  }
}

Enter fullscreen mode Exit fullscreen mode

Her iki durumda da, bu widget öğesi statiktir ve kendini güncelleyemediği için mantıktan yoksundur. Yapılandırması, parent widget'lara dayanır. Durum bilgisi olan bir widget öğesinin aksine (stateful widget - bunu yakında göreceğiz) nasıl yeniden oluşturulacağını bilmiyor.

Stateless widget aracınız için methodlarınız olabilir, ancak bir stateless widget öğesi, Flutter onu widget öğesi ağacından kaldırdığında tamamen yok edilir. Bu bölümün ilerleyen kısımlarında widget tree ve context hakkında daha fazla konuşacağız, ancak bir stateless widget'ın kaybetmek istemediğiniz verilerden sorumlu olmaması gerektiğini anlamak önemlidir.
Bir kez gitti mi, gitti. Once it’s gone, it’s gone.

Reference: Flutter in Action chapter-3 77

Discussion (0)