Flutter, kullanıcı arayüzü oluşturmak için geniş bir widget koleksiyonuna sahip bir UI çerçevesidir. Widgetlar, kullanıcı arayüzünü oluşturmak için kullanılan temel yapı birimleridir. Flutter’da iki temel widget türü bulunur: Stateless (Durumsuz) widgetlar ve Stateful (Durumlu) widgetlar.
- Stateless (Durumsuz) Widgetlar: Stateless widgetlar, durumu değiştiremez ve oluşturulduktan sonra sabit kalır. Yani, bir kez oluşturulduktan sonra içeriğindeki herhangi bir şeyi değiştiremezsiniz. Bu tür widgetlar genellikle statik içeriğe veya kullanıcının etkileşimine ihtiyaç duymayan basit arayüz bileşenlerine uygundur. Örneğin, bir metin, resim veya düğme gibi bileşenler durumsuz widgetlara örnek olarak verilebilir.
StatelessWidget örneği:
import 'package:flutter/material.dart'; class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Container( child: Text('Merhaba, Dünya!'), ); } }
- Stateful (Durumlu) Widgetlar: Stateful widgetlar, durumu değiştirebilir ve widget ömrü boyunca güncellenmesi gereken dinamik içeriğe sahip bileşenler için kullanılır. Bu tür widgetlar, kullanıcının etkileşimine veya zamanla değişen verilere bağlı olarak yeniden oluşturulabilir ve güncellenebilir. Örneğin, bir sayaç, bir giriş formu veya bir liste gibi bileşenler durumlu widgetlara örnek olarak verilebilir.
StatefulWidget örneği:
import 'package:flutter/material.dart'; class MyWidget extends StatefulWidget { @override _MyWidgetState createState() => _MyWidgetState(); } class _MyWidgetState extends State<MyWidget> { int count = 0; void incrementCount() { setState(() { count++; }); } @override Widget build(BuildContext context) { return Container( child: Column( children: [ Text('Sayacın değeri: $count'), ElevatedButton( onPressed: incrementCount, child: Text('Arttır'), ), ], ), ); } }
Yukarıdaki örnekte, _MyWidgetState
sınıfı, sayacın değerini tutan bir değişkeni güncellemek için setState()
yöntemini kullanır. Bu yöntem çağrıldığında, Flutter çerçevesi widget ağacını güncelleyerek arayüzü yeniler.
Stateful widgetlar, widget ağacında daha fazla işlem yaparlar ve dolayısıyla daha fazla kaynak tüketirler. Bu nedenle, kullanmadığınız durum yönetimi veya widget güncellemesi gerektirmeyen bileşenler için durumsuz widgetları tercih etmek daha verimli olabilir.
Flutter’da widgetlar arasındaki ilişki ve iletişim hakkında daha fazla bilgi için Flutter’ın resmi belgelerini inceleyebilirsiniz.