CodeBlanks Logo Icon CodeBlanks

State ve sayaç

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

main.dart
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

main.dart
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

Soru
class _SayacEkraniState extends State<SayacEkrani> {
  ____ _sayac = 0;
}
Cevap
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

Başlangıç bölümündeki tüm dersler