Ahmet Balaman LogoAhmet Balaman

Flutter: AlertDialog Kullanımı ve Özelleştirme

personAhmet Balaman
calendar_today
FlutterAlertDialogDialogWidgetUIPopup

AlertDialog, kullanıcıya uyarı mesajı verebildiğimiz veya onay alabileceğimiz bir popup yapısıdır. Kullanıcı dialog'u kapatmadığı sürece ekranda kalır ve arka plandaki içerikle etkileşimi engeller.

Canlı Demo

Aşağıdaki interaktif örnekte bu widget'ı deneyebilirsiniz:

💡 Eğer yukarıdaki örnek açılmazsa, DartPad linkine tıklayarak yeni sekmede çalıştırabilirsiniz.

Temel Kullanım

AlertDialog göstermek için showDialog fonksiyonu kullanılır:

showDialog(
  context: context,
  builder: (BuildContext context) {
    return AlertDialog(
      title: Text('Başlık'),
      content: Text('İçerik metni'),
      actions: [
        TextButton(
          onPressed: () => Navigator.of(context).pop(),
          child: Text('TAMAM'),
        ),
      ],
    );
  },
);

Onay Dialog'u

Kullanıcıdan onay almak için:

Future<void> _showConfirmDialog() async {
  final result = await showDialog<bool>(
    context: context,
    builder: (context) => AlertDialog(
      title: Text('Silme Onayı'),
      content: Text('Bu öğeyi silmek istiyor musunuz?'),
      actions: [
        TextButton(
          onPressed: () => Navigator.pop(context, false),
          child: Text('HAYIR'),
        ),
        TextButton(
          onPressed: () => Navigator.pop(context, true),
          child: Text('EVET'),
        ),
      ],
    ),
  );
  
  if (result == true) {
    // Silme işlemi
  }
}

Girdi Alma

TextField ile kullanıcıdan veri almak:

final controller = TextEditingController();

showDialog(
  context: context,
  builder: (context) => AlertDialog(
    title: Text('İsim Girin'),
    content: TextField(
      controller: controller,
      decoration: InputDecoration(hintText: 'Adınız...'),
    ),
    actions: [
      TextButton(
        onPressed: () => Navigator.pop(context),
        child: Text('İPTAL'),
      ),
      TextButton(
        onPressed: () => Navigator.pop(context, controller.text),
        child: Text('KAYDET'),
      ),
    ],
  ),
);

Önemli Özellikler

Özellik Açıklama
title Dialog başlığı
content Dialog içeriği
actions Alt kısımdaki butonlar
shape Dialog şekli
backgroundColor Arka plan rengi
barrierDismissible Dışına tıklayınca kapansın mı

barrierDismissible

Dialog dışına tıklandığında kapanmasını engellemek için:

showDialog(
  context: context,
  barrierDismissible: false, // Dışına tıklayınca kapanmaz
  builder: (context) => AlertDialog(
    title: Text('Zorunlu Seçim'),
    content: Text('Bir seçenek seçmelisiniz'),
    actions: [...],
  ),
);

Özet

  • AlertDialog: Modal popup penceresi
  • showDialog: Dialog göstermek için kullanılır
  • Navigator.pop(): Dialog'u kapatır ve değer döndürür
  • barrierDismissible: Dışına tıklama davranışını kontrol eder
  • actions: Dialog butonlarını içerir

AlertDialog, kullanıcı onayı ve bilgilendirme için temel bir araçtır.

Yorumlar