Ce face List.empty
List.empty() creează o listă goală. Atenție: implicit este de lungime fixă, deci nu poți adăuga nimic în ea. Pentru o listă goală în care adaugi, scrie List.empty(growable: true) sau, mai simplu, <E>[].
List.unmodifiable(elemente) copiază elementele într-o listă care nu acceptă nicio modificare: add, []=, sort aruncă UnsupportedError. Este util când returnezi o listă internă și nu vrei ca cine o primește să o schimbe.
Parametri
| Parametru | Descriere |
|---|---|
growable |
Pentru empty: true ca să poți adăuga elemente. |
elements |
Pentru unmodifiable: elementele copiate. |
Ce returnează
O List<E> nouă.
Exemple
Exemplul 1: Liste goale fixe și extensibile
void main() {
final fixa = List<String>.empty();
final extensibila = List<String>.empty(growable: true);
extensibila.add('Ana');
print('$fixa / $extensibila');
try {
fixa.add('Mihai');
} on UnsupportedError catch (e) {
print('fixă: ${e.message}');
}
}
Rezultat
[] / [Ana]
fixă: Cannot add to a fixed-length list
Exemplul 2: O listă protejată de modificări
class Catalog {
final _note = <int>[9, 10];
List<int> get note => List.unmodifiable(_note);
void adauga(int n) => _note.add(n);
}
void main() {
final c = Catalog();
c.adauga(8);
print(c.note);
try {
c.note.add(1);
} on UnsupportedError catch (e) {
print('Nu se poate: ${e.message}');
}
}
Rezultat
[9, 10, 8]
Nu se poate: Cannot add to an unmodifiable list
Greșeli frecvente
- Scrii
final lista = List<int>.empty();și apoilista.add(1): lista este fixă. Folosește<int>[].
Comenzi înrudite
List: Lista din Dart: elemente în ordine, accesate după poziție, care poate crește sau scădea.List.filled: List.filled creează o listă cu aceeași valoare pe fiecare poziție; List.generate calculează fiecare element din poziția lui.List.from: Creează o listă nouă cu elementele unei colecții; of verifică tipul la compilare, from la rulare.UnmodifiableListView: O vedere doar pentru citire peste o listă: nu poate fi modificată, dar arată schimbările din lista originală.