CodeBlanks Logo Icon CodeBlanks

Silme ve ayraç

Kaydırarak silme ve satır ayraçlarını eklersin.

Dismissible ile silme

Kaydırarak silme yapmak için Dismissible widget'ı kullanılır. Dismissible, child'ını sarmalar ve kullanıcı tarafından sağa veya sola kaydırıldığında onDismissed callback'ini çağırır. Her Dismissible'a benzersiz bir key verilmelidir.

Dismissible(
  key: ValueKey(todo.title),
  onDismissed: (direction) {
    setState(() {
      list.removeAt(index);
    });
  },
  child: ListTile(...),
)

Divider ile ayraç

Liste satırları arasına ayraç koymak için ListView.separated ve Divider kullanılır. separatorBuilder her satır arasına bir widget çizer; çoğunlukla bir Divider verilir. Böylece satırlar görsel olarak ayrılır.

Uygulama Kaydırarak sil

sil adında bir fonksiyon yaz; List<Todo> ve int index parametreleri alsın, ilgili elemanı listeden çıkarsın ve 'Silindi' yazdırsın. main içinde iki görevli bir liste oluştur ve sil'i 0 indeksiyle çağır.

Başlangıç kodu

main.dart
import 'package:flutter/material.dart';

class Todo {
  String title;
  bool done;
  Todo({required this.title, this.done = false});
}

// sil fonksiyonu yaz: List<Todo> ve int index alsin
// ilgili elemani listeden cikar
// "Silindi" yazdirsin

void main() {
  final list = [Todo(title: 'A'), Todo(title: 'B')];
  // sil'i cagir
}

Örnek çözüm

main.dart
import 'package:flutter/material.dart';

class Todo {
  String title;
  bool done;
  Todo({required this.title, this.done = false});
}

void sil(List<Todo> list, int index) {
  list.removeAt(index);
  print('Silindi');
}

void main() {
  final list = [Todo(title: 'A'), Todo(title: 'B')];
  sil(list, 0);
}

Beklenen çıktı

Silindi

Soru ve cevaplar

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

1 Dismissible hangi parametreye benzersiz değer verilmelidir?

  • shape
  • key Doğru cevap
  • padding
  • color

Açıklama: Dismissible'a benzersiz bir key verilmelidir; color, shape ve padding benzersiz olmayı gerektirmez.

2 Dismissible'a onDismissed ekle

Soru
Dismissible(
  key: ValueKey(todo.title),
  ____: (direction) {
    list.removeAt(index);
  },
  child: ListTile(...),
)
Cevap
Dismissible(
  key: ValueKey(todo.title),
  onDismissed: (direction) {
    list.removeAt(index);
  },
  child: ListTile(...),
)

Açıklama: Kaydırma tamamlandığında çağrılması için onDismissed kullanılır; onTap, onPressed veya onLongPress kaydırma olayını yakalamaz.

3 Silme ve ayraç parçaları

Kavram Anlamı
Dismissible Kaydırarak silme sağlar
key Dismissible'ın benzersiz kimliği
Divider Satır ayraç çizgisi
ListView.separated Ayraçlı liste

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