List.empty în Dart

List: liste Dart 2.9

List.empty creează o listă goală; List.unmodifiable creează o copie care nu mai poate fi schimbată.

Sintaxă
List<E>.empty({bool growable = false})
List<E>.unmodifiable(Iterable elements)

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 apoi lista.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ă.