State ve sayaç
- Flutter kursu
- Başlangıç
- Ders 92/99
- 4 dk
StatefulWidget ile sayaç değişkenini tanımlarsın.
State ve sayaç değişkeni
Sayacın değerini tutmak için bir StatefulWidget kullanırsın. State sınıfında int _sayac = 0; gibi bir değişken tanımlarsın. Bu değişken State'e özeldir ve setState ile değiştirildiğinde ekran yeniden çizilir.
class SayacEkrani extends StatefulWidget {
const SayacEkrani({super.key});
@override
State<SayacEkrani> createState() => _SayacEkraniState();
}
class _SayacEkraniState extends State<SayacEkrani> {
int _sayac = 0;
}setState ile güncelleme
Sayaç değişkenini değiştirmek için setState çağrılır. setState, içindeki kodu çalıştırır ve widget'ı yeniden çizer. Bu sayede Text('$_sayac') gibi widget'lar güncel değeri gösterir.
setState(() {
_sayac = _sayac + 1;
});Uygulama Sayacı artır ve yazdır
SayacEkrani adında bir StatefulWidget yaz; State içinde bir int sayaç değişkeni tanımla (başlangıç 0). artir adında bir fonksiyon yaz; setState içinde sayacı 1 artırsın ve sayacın değerini yazdırsın. main içinde bir State örneği oluştur ve artir'ı çağır.
Başlangıç kodu
import 'package:flutter/material.dart';
// SayacEkrani adinda StatefulWidget yaz
// State icine bir int sayaç degiskeni tanimla (baslangic 0)
// artir fonksiyonu: setState ile sayaci 1 artirsin ve sayaci yazdirsin
void main() {
// bir State olustur ve artir'i cagir
}Örnek çözüm
import 'package:flutter/material.dart';
class SayacEkrani extends StatefulWidget {
const SayacEkrani({super.key});
@override
State<SayacEkrani> createState() => _SayacEkraniState();
}
class _SayacEkraniState extends State<SayacEkrani> {
int _sayac = 0;
void artir() {
setState(() {
_sayac = _sayac + 1;
});
print(_sayac);
}
}
void main() {
final state = _SayacEkraniState();
state.artir();
}Beklenen çıktı
1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Sayacın değerini tutan değişken hangi türde tanımlanır?
- bool
- int Doğru cevap
- double
- String
Açıklama: Sayacın değeri tam sayı olduğu için int türünde tutulur; String, bool veya double bu amaca yönelik değildir.
2 Sayaç değişkeninin türünü ekle
class _SayacEkraniState extends State<SayacEkrani> {
____ _sayac = 0;
}
class _SayacEkraniState extends State<SayacEkrani> {
int _sayac = 0;
}
Açıklama: Sayacın değeri tam sayı olduğu için değişken int türünde tanımlanır; String, bool veya double bu amaca yönelik değildir.
3 State ve sayaç parçaları
| Kavram | Anlamı |
|---|---|
StatefulWidget |
Durum tutan widget türü |
int |
Sayacın türü |
setState |
Ekranı yeniden çizer |
_sayac |
State içindeki sayaç değişkeni |