Ce face List
List<E> este colecția folosită cel mai des: elementele stau în ordine, de la poziția 0 la length - 1, iar lista[i] le citește direct. Cel mai simplu o creezi cu un literal: [1, 2, 3] sau <String>[] pentru o listă goală de texte.
O listă creată cu literal sau cu [] este extensibilă: add, insert și remove îi schimbă lungimea. Există și liste de lungime fixă (List.filled, toList(growable: false)) și liste nemodificabile (const [...], List.unmodifiable).
Literalul de listă acceptă if, for și ... (spread) în interior, ceea ce face ușoară construirea listelor din alte date. List are toate metodele lui Iterable (map, where, join…).
Ce returnează
Un obiect List. Metodele lui au pagini separate.
Exemple
Exemplul 1: Creare, citire și modificare
void main() {
final orase = ['Iași', 'Cluj', 'Brașov'];
final note = <int>[];
note.add(9);
note.add(10);
print(orase);
print('primul: ${orase[0]}, ultimul: ${orase[orase.length - 1]}');
orase[1] = 'Cluj-Napoca';
print(orase);
print('note: $note (${note.length})');
}
Rezultat
[Iași, Cluj, Brașov]
primul: Iași, ultimul: Brașov
[Iași, Cluj-Napoca, Brașov]
note: [9, 10] (2)
Exemplul 2: if, for și spread în literal
void main() {
const esteWeekend = true;
final baza = ['pâine', 'lapte'];
final cumparaturi = [
...baza,
if (esteWeekend) 'prăjitură',
for (var i = 1; i <= 2; i++) 'sticlă de apă $i',
];
print(cumparaturi);
}
Rezultat
[pâine, lapte, prăjitură, sticlă de apă 1, sticlă de apă 2]
Exemplul 3: Liste de lungime fixă și nemodificabile
void main() {
const zile = ['luni', 'marți', 'miercuri'];
try {
zile.add('joi');
} on UnsupportedError catch (e) {
print('const: ${e.message}');
}
final scoruri = List.filled(3, 0);
scoruri[0] = 7;
print(scoruri);
try {
scoruri.add(1);
} on UnsupportedError catch (e) {
print('fixă: ${e.message}');
}
}
Rezultat
const: Cannot add to an unmodifiable list
[7, 0, 0]
fixă: Cannot add to a fixed-length list
Greșeli frecvente
- Citești
lista[lista.length]saulista[0]pe o listă goală: apareRangeError. Ultimul element este lalength - 1. - Declari o listă cu
finalși crezi că nu mai poate fi modificată.finalblochează doar variabila; conținutul se schimbă în continuare. Pentru conținut fix foloseșteconstsauList.unmodifiable.
Comenzi înrudite
List.add: add adaugă un element la sfârșitul listei; addAll adaugă toate elementele unei alte colecții.List.operator[]: lista[i] citește elementul de pe poziția i; lista[i] = x îl înlocuiește.List.filled: List.filled creează o listă cu aceeași valoare pe fiecare poziție; List.generate calculează fiecare element din poziția lui.Iterable: Tipul de bază pentru orice colecție care poate fi parcursă element cu element: List, Set, cheile unui Map.Map: Colecție de perechi cheie–valoare: cauți rapid o valoare după cheia ei (nume, cod, oraș).Set: Colecție fără elemente duplicate: fiecare valoare apare o singură dată, iar căutarea este rapidă.