CodeBlanks Logo Icon CodeBlanks

Azalt butonu

İkinci FAB ile sayacı azaltan callback yazarsın.

Azalt butonu

Sayacı azaltmak için ikinci bir FloatingActionButton kullanılır. Bu butonun onPressed callback'inde setState ile _sayac değişkeni 1 azaltılır. İki buton genellikle bir Row içine yerleştirilir ve FloatingActionButton için ortak bir parent kullanılır.

FloatingActionButton(
  onPressed: () {
    setState(() {
      _sayac = _sayac - 1;
    });
  },
  child: Icon(Icons.remove),
)

Row ile iki buton

İki FloatingActionButton'ı Scaffold'ın floatingActionButton parametresinde göstermek için bir Row içine alınır. Row, butonları yatayda yan yana dizer; her buton kendi onPressed callback'ini taşır.

Row(
  children: [
    FloatingActionButton(onPressed: () {}, child: Icon(Icons.remove)),
    FloatingActionButton(onPressed: () {}, child: Icon(Icons.add)),
  ],
)

Uygulama Artır ve azalt fonksiyonlarını yaz

SayacEkrani adında bir StatefulWidget yaz; State içinde bir int sayaç değişkeni tanımla (başlangıç 0). artir fonksiyonu setState ile sayacı 1 artırsın, azalt fonksiyonu setState ile sayacı 1 azaltsın. main içinde bir State örneği oluştur, önce artir'ı sonra azalt'ı çağır ve sonucu yazdı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
// azalt fonksiyonu: setState ile sayaci 1 azaltsin
// main icinde once artir sonra azalt cagir ve sonucu yazdir

void main() {
}

Ö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;
    });
  }

  void azalt() {
    setState(() {
      _sayac = _sayac - 1;
    });
  }
}

void main() {
  final state = _SayacEkraniState();
  state.artir();
  state.azalt();
  print(state._sayac);
}

Beklenen çıktı

0

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Azalt butonunun Icon parametresi için hangisi kullanılır?

  • Icon(Icons.menu)
  • Icon(Icons.add)
  • Icon(Icons.remove) Doğru cevap
  • Icon(Icons.search)

Açıklama: Azaltma işlemini görsel olarak göstermek için Icon(Icons.remove) kullanılır; add artırma, search arama, menu menü içindir.

2 setState içinde azaltma

Soru
FloatingActionButton(
  onPressed: () {
    ____(() {
      _sayac = _sayac - 1;
    });
  },
  child: Icon(Icons.remove),
)
Cevap
FloatingActionButton(
  onPressed: () {
    setState(() {
      _sayac = _sayac - 1;
    });
  },
  child: Icon(Icons.remove),
)

Açıklama: Azaltma işleminin ekrana yansıması için setState çağrılır; build, refresh veya update aynı işi yapmaz.

3 Azalt butonu parçaları

Kavram Anlamı
FloatingActionButton Yüzen azaltma butonu
onPressed Basınca çağrılan callback
decrement Bir azaltma işlemi
Icon(Icons.remove) Eksi sembolü ikonu

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