Flutter Stateless Widget nedir? En çok sorulan sorulardan ilk beşe rahatlıkla oynayacak bu soruya bu yazımda yanıt vermeye çalışacağım. Daha sonraki yazılarımda ise Stateful Widget’a ve Stateful Widget’ın Stateless Widget ile olan farkında değinmeye çalışacağım. Şimdilik Stateless Widget nedir, hangi durumlarda kullanılır bunu öğrenelim. 🙂
Eğer Flutter Framework’u yeni öğreniyorsanız Flutter’a ilk dokunuşumda deneyimlediklerime göz atmanızda fayda var.
StatelesWidget, durumu değişmeyecek ve ekranda bir kere çizildikten sonra değişime uğramayacak Widget’ların sınıfıdır. Örneğin en basit haliyle bir butonu ele alalım. Bir buton, kullanıcı deneyimi açısından bir defa ekrana basılır ve bir değişime uğramaz. İçerisindeki onPressed metotu ile birlikte başka widget’lar değişime uğrar. Bu durumda bir butonun StatelessWidget olarak yazılması uygundur.
Peki başka neler StatelessWidget olabilir? Kendi oluşturduğunuz ListTile gibi bir Widget’ı düşünürsek, içerisine Product gibi bir sınıfın verisini aldıktan sonra, bu ListTile objeleri bir ListView içerisinde yazıldıktan sonra değişime uğramaz ve Product verilerini bir ListView içerisinde kullanıcıya sunmuş olursunuz. Yani kısacası;
class HorizontalSeperator extends StatelessWidget {
final Color color;
final double thickness;
HorizontalSeperator({this.color,this.thickness});
@override
Widget build(BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width,
height: thickness,
decoration: BoxDecoration(
color: color,
borderRadius: BorderRadius.all(Radius.circular(20.0))),
);
}
}
Divider amacıyla kullanılmak için yazılmış HorizontalSeperator sınıfında olduğu gibi StatelessWidget verileri yalnızca dışarıdan çağırıldıkları zaman alır ve build ile senkron çalışır. Bunun anlamı içerisinde asenkron çalışan fonksiyonlar kullanılamaz demektir.
Peki diyelim küçük elementleri StatelessWidget olarak yazdınız ve bazı controller’lara erişmek istiyorsunuz ve erişemiyorsunuz? Bu durumda o sınıflara StatefulWidget’tan istediğiniz controller, function, data’yi göndererek o StatelessWidget içerisinde almak istediğiniz aksiyonu alabilirsiniz. Unutmayın, Flutter’da her türlü veri her türlü State içerisine gönderilebilir. 🙂
Eğer StatelessWidget ve StatefulWidget kavramlarını iyi anladığınızı düşünüyorsanız, GetX, BLoC, MobX, Provider gibi çözümleri kullanarak uygulamanız içerisinde State yönetimini daha da basitleştirebilirsiniz.
Bir sonraki yazımda görüşmek üzere!
2 Comments