Junior
Stateful ve Stateless widget'lar arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
-
StatelessWidget:
- İçsel durumu olmayan, zamanla değişebilecek duruma sahip olmayan bir widget.
- Widget parametreleri oluşturulurken belirlenir ve yaşam döngüsü boyunca değişmez.
- Statik verileri göstermek için kullanılır.
- Yeniden çizim yalnızca üst widget yeniden yapılandırıldığında gerçekleşir.
build()metodu ile uygulanır.
-
StatefulWidget:
- İçsel durumu (
State) olan ve kullanıcı etkileşimleri, ağ istekleri gibi olaylara yanıt verebilen bir widget. setState()metodu çağrıldığında yeniden çizim gerçekleşir.- Etkileşimli öğeler ve dinamik veriler göstermek için kullanılır.
- İki bölümden oluşur: kendisi
StatefulWidgetve ona bağlıStatenesnesi.
- İçsel durumu (
| Özellik | StatelessWidget | StatefulWidget |
|---|---|---|
| Durum | Yok | Değişebilir duruma sahip (State) |
| Yeniden çizim | Üst widget yeniden yapılandırıldığında | setState() çağrıldığında |
| Kullanım | Statik veriler, etkileşimsiz öğeler | Etkileşimli öğeler, dinamik veriler |
| Uygulama | Sadece build() metodu ile |
createState() ve yaşam döngüsü metodları ile |
// StatelessWidget örneği
class MyStatelessWidget extends StatelessWidget {
final String text;
MyStatelessWidget({required this.text});
@override
Widget build(BuildContext context) {
return Text(text); // Verilen metni gösterir
}
}
// StatefulWidget örneği
class MyStatefulWidget extends StatefulWidget {
@override
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
int _counter = 0; // İçsel durum
void _incrementCounter() {
setState(() {
// Durumu değiştirir ve yeniden çizim yapar
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Sayaç:'),
Text('$_counter'),
ElevatedButton(
onPressed: _incrementCounter, // Tıklama ile çağrılır
child: Text('Arttır'),
),
],
);
}
}