Dart’ta Listeler (Lists), sıralı ve birden fazla elemanı bir arada tutmak için kullanılan veri yapılandırmalarıdır.
1. Liste Oluşturma
Dart’ta bir liste, köşeli parantez ([]
) kullanılarak oluşturulur.
void main() {
// Boş liste oluşturma
List<int> sayilar = []; // Veya List.empty(growable: true);
// Elemanlarla birlikte bir liste oluşturma
List<String> meyveler = ["Elma", "Armut", "Muz"];
print(meyveler); // [Elma, Armut, Muz]
}
2. Dinamik ve Tip Belirtilmiş Listeler
Dart, hem tip belirtilmiş hem de dinamik listeler oluşturmayı destekler.
- Tip Belirtilmiş Liste:
List<int> sayilar = [1, 2, 3, 4];
List<String> isimler = ["Ahmet", "Mehmet", "Ali"];
List<dynamic> karisik = [1, "Ahmet", true, 4.5];
print(karisik); // [1, Ahmet, true, 4.5]
3. Listeye Eleman Ekleme
- add(): Tek bir eleman ekler.
List<int> sayilar = [1, 2, 3];
sayilar.add(4);
print(sayilar); // [1, 2, 3, 4]
- addAll(): Birden fazla eleman ekler.
List<int> sayilar = [1, 2];
sayilar.addAll([3, 4, 5]);
print(sayilar); // [1, 2, 3, 4, 5]
4. Liste Elemanlarına Erişim
Liste elemanlarına indeksleri aracılığıyla erişilir (0 tabanlıdır).
void main() {
List<String> meyveler = ["Elma", "Armut", "Muz"];
// İlk eleman
print(meyveler[0]); // Elma
// Son eleman
print(meyveler[meyveler.length - 1]); // Muz
// Liste uzunluğu
print(meyveler.length); // 3
}
5. Liste Elemanlarını Güncelleme
Bir liste elemanını değiştirmek için, indeks ile eleman atanır.
void main() {
List<String> meyveler = ["Elma", "Armut", "Muz"];
meyveler[1] = "Çilek";
print(meyveler); // [Elma, Çilek, Muz]
}
6. Liste Elemanlarını Silme
- remove(): Belirtilen elemanı siler.
List<int> sayilar = [1, 2, 3, 4];
sayilar.remove(3);
print(sayilar); // [1, 2, 4]
- removeAt(): Belirtilen indeksteki elemanı siler.
List<int> sayilar = [1, 2, 3, 4];
sayilar.removeAt(1);
print(sayilar); // [1, 3, 4]
- clear(): Tüm elemanları siler.
List<int> sayilar = [1, 2, 3, 4];
sayilar.clear();
print(sayilar); // []
7. Listeyi Döngüyle Gezinme
- for Döngüsü:
List<String> meyveler = ["Elma", "Armut", "Muz"];
for (int i = 0; i < meyveler.length; i++) {
print(meyveler[i]);
}
- forEach():
List<String> meyveler = ["Elma", "Armut", "Muz"];
meyveler.forEach((meyve) {
print(meyve);
});
- for-in Döngüsü:
List<String> meyveler = ["Elma", "Armut", "Muz"];
for (var meyve in meyveler) {
print(meyve);
}
8. Liste Filtreleme ve İşlemleri
- where(): Listeyi belirli bir koşula göre filtreler.
List<int> sayilar = [1, 2, 3, 4, 5, 6];
var ciftSayilar = sayilar.where((sayi) => sayi % 2 == 0);
print(ciftSayilar.toList()); // [2, 4, 6]
map(): Liste elemanlarını dönüştürür.
List<int> sayilar = [1, 2, 3];
var kareler = sayilar.map((sayi) => sayi * sayi);
print(kareler.toList()); // [1, 4, 9]
9. Sabit Boyutlu Listeler
Eğer bir listenin boyutunu sabit yapmak istiyorsanız, List.filled()
kullanabilirsiniz.
void main() {
List<int> sabitListe = List.filled(5, 0);
print(sabitListe); // [0, 0, 0, 0, 0]
}
10. Spread Operatörü (...
) ve Null-Aware Spread Operatörü (...?
)
Spread operatörü, bir listenin elemanlarını başka bir listeye ekler.
void main() {
List<int> sayilar1 = [1, 2, 3];
List<int> sayilar2 = [4, 5, ...sayilar1];
print(sayilar2); // [4, 5, 1, 2, 3]
List<int>? bosListe;
List<int> sayilar3 = [0, ...?bosListe];
print(sayilar3); // [0]
}
11. Liste Sıralama
- sort(): Listeyi sıralar.
List<int> sayilar = [3, 1, 4, 1, 5];
sayilar.sort();
print(sayilar); // [1, 1, 3, 4, 5]
- Ters Sıralama:
sayilar.sort((a, b) => b.compareTo(a));
print(sayilar); // [5, 4, 3, 1, 1]
12. Boş Liste Kontrolü
Bir listenin boş olup olmadığını kontrol etmek için isEmpty
veya isNotEmpty
kullanılır.
void main() {
List<int> sayilar = [];
print(sayilar.isEmpty); // true
print(sayilar.isNotEmpty); // false
}
Dart Listeler ile Çalışmak
Dart’ta listeler oldukça güçlü ve esnektir. Liste elemanlarını dinamik olarak yönetebilir, filtreleyebilir ve dönüştürebilirsiniz. Bu esneklik sayesinde Dart, hem küçük hem de büyük projelerde liste işlemleri için ideal bir araçtır.