Ahmet Balaman LogoAhmet Balaman

Flutter: DropdownButton Kullanımı ve Özellikleri

personAhmet Balaman
calendar_today
FlutterDropdownButtonSpinnerWidgetUIForm

DropdownButton, Android'de Spinner olarak bilinen, tıkladığımızda bir liste görebildiğimiz seçim yapısıdır. Kullanıcıya birden fazla seçenek sunmak ve tek bir seçim yaptırmak için idealdir.

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

DropdownButton, bir liste içinden seçim yapmak için kullanılır.

String? selectedValue;

DropdownButton<String>(
  value: selectedValue,
  hint: Text('Seçim yapın'),
  items: ['Seçenek 1', 'Seçenek 2', 'Seçenek 3'].map((String value) {
    return DropdownMenuItem<String>(
      value: value,
      child: Text(value),
    );
  }).toList(),
  onChanged: (String? newValue) {
    setState(() {
      selectedValue = newValue;
    });
  },
)

Önemli Özellikler

Özellik Açıklama
value Seçili olan değer
hint Seçim yapılmadığında gösterilen widget
items DropdownMenuItem listesi
onChanged Seçim değiştiğinde çağrılan fonksiyon
isExpanded Genişliği parent'a göre ayarlar
underline Alt çizgi widget'ı
icon Açılır ok ikonu
dropdownColor Açılan listenin arka plan rengi

DropdownButtonFormField

Form içinde kullanım için DropdownButtonFormField tercih edilmelidir. Validasyon desteği sunar.

DropdownButtonFormField<String>(
  value: selectedValue,
  decoration: InputDecoration(
    labelText: 'Kategori',
    border: OutlineInputBorder(),
    prefixIcon: Icon(Icons.category),
  ),
  items: categories.map((String category) {
    return DropdownMenuItem<String>(
      value: category,
      child: Text(category),
    );
  }).toList(),
  onChanged: (String? newValue) {
    setState(() {
      selectedValue = newValue;
    });
  },
  validator: (value) {
    if (value == null || value.isEmpty) {
      return 'Lütfen bir kategori seçin';
    }
    return null;
  },
)

Özelleştirilmiş DropdownMenuItem

Her bir item'ı özelleştirebilirsiniz:

DropdownMenuItem<String>(
  value: 'premium',
  child: Container(
    padding: EdgeInsets.symmetric(vertical: 8),
    child: Row(
      children: [
        Icon(Icons.star, color: Colors.amber),
        SizedBox(width: 10),
        Text('Premium Üyelik'),
        Spacer(),
        Container(
          padding: EdgeInsets.symmetric(horizontal: 8, vertical: 2),
          decoration: BoxDecoration(
            color: Colors.green,
            borderRadius: BorderRadius.circular(10),
          ),
          child: Text('Önerilen', style: TextStyle(color: Colors.white, fontSize: 10)),
        ),
      ],
    ),
  ),
)

Özet

  • DropdownButton: Android Spinner'ın Flutter karşılığı
  • DropdownMenuItem: Liste elemanlarını temsil eder
  • DropdownButtonFormField: Form validasyonu için kullanılır
  • isExpanded: Genişliği kontrol eder
  • onChanged: Seçim değişikliğini yakalar

DropdownButton, kullanıcıdan tek seçim almak için en yaygın kullanılan widget'lardan biridir.

Yorumlar