Dart dilinde listeler başka programlama dili biliyorsanız, diziler (array) yapısıyla aynıdır. Temel olarak mantığı ortak bir çatı altında verileri toplamaktır.
Mesela ayları içeren bir program yazacaksınız hey ay için birinci_ay = ocak, ikinci_ay = şubat ... gibi sürekli değişken tanımlamak yerine aylar diye bir liste oluşturup hepsini içine dahil etmek doğrusudur.

void main(){
var aylar = new List(12); // 12 elemanlı bir liste tanımı
print(aylar);
//Bu şekilde çalıştırırsanız elemanların yerine varsayılan olarak null atanır yani 12 tane null çıktısı olur listede.
}
Bir çok programlama dilinde oluğu gibi dart da sayma işlemi (index), 0 (sıfır) dan başlar. Listedeki her bir elemana karşılık bir index değeri verilir. Bu index değerleri listedeki elemanlara erişimimizi sağlar. Aşağıdaki örneği incelersek 0.index = ocak, 1.index = şubat ... şeklinde değerleri vardır.
void main(){
var aylar = new List(12);
aylar[0] = "ocak";// 0. index'e ocak değeri verdik.
aylar[1] = "şubat";
aylar[2] = "mart";
aylar[13] = "yeniay"; // Hatalı bir işlemdir. Liste boyutu 12'dir ve onu aştığında Range Error hatası oluşur.
}
Doğrudan veri girerek liste tanımı
Üstteki liste tanımından farklı olarak veriler elimizde hazırsa direk eşitlik şeklinde listeye ekleyerek tanımlayabiliriz.
void main(){
var sehirler = {"Ankara", "İzmir", "Adana"};
sehirler.add("İstanbul"); //listeye veri ekleme
print(sehirler.lenght); //liste boyutunu verirler.
print(sehirler.first); //listenin ilk elemanını verir. last son elemanını verir.
sehirler.insert(1, "Kars"); // index 1 e Kars şehrini ekledi.
print(sehirler.firstWhere((s) => s.contains("a"))); // içinde a harfi olan ilk değeri ver.çıkı--> Ankara. Eğer olmayan bir harf sorgularsanız hata alırsınız.
}