Map.operator[] în Dart

map[cheie] citește valoarea unei chei (sau null), iar map[cheie] = valoare adaugă sau înlocuiește o pereche.

Sintaxă
V? operator [](Object? key)
void operator []=(K key, V value)

Ce face Map.operator[]

map[cheie] returnează valoarea legată de cheie sau null dacă cheia nu există. De aceea tipul rezultatului este nullable: V?.

map[cheie] = valoare pune perechea în map. Dacă cheia exista deja, valoarea veche este înlocuită și ordinea cheii nu se schimbă; dacă nu exista, perechea se adaugă la sfârșit.

Parametri

Parametru Descriere
key Cheia căutată sau cheia la care se scrie.
value Pentru []=: valoarea nouă.

Ce returnează

[] returnează valoarea sau null. []= nu returnează nimic.

Exemple

Exemplul 1: Citire, scriere și chei lipsă

void main() {
  final prefixe = {'Iași': '0232', 'Cluj': '0264'};
  print(prefixe['Iași']);
  print(prefixe['Brașov']);

  prefixe['Brașov'] = '0268';
  prefixe['Iași'] = '0332';
  print(prefixe);
}

Rezultat

0232
null
{Iași: 0332, Cluj: 0264, Brașov: 0268}

Exemplul 2: Valoare implicită cu ?? și operatorul !

?? dă o valoare de rezervă când cheia lipsește. ! spune compilatorului că ești sigur că cheia există; dacă greșești, programul se oprește cu eroare.

void main() {
  final preturi = {'cafea': 12.5, 'ceai': 8.0};
  final suc = preturi['suc'] ?? 0.0;
  print('suc: $suc lei');

  if (preturi.containsKey('cafea')) {
    final cafea = preturi['cafea']!;
    print('2 cafele: ${cafea * 2} lei');
  }

  preturi['ceai'] = preturi['ceai']! + 1;
  print(preturi);
}

Rezultat

suc: 0.0 lei
2 cafele: 25.0 lei
{cafea: 12.5, ceai: 9.0}

Greșeli frecvente

  • Scrii map['x'] + 1 fără ! sau ??. Analizorul dă eroare, pentru că valoarea poate fi null.
  • Folosești ! pe o cheie care lipsește: programul se oprește cu „Null check operator used on a null value”.

Comenzi înrudite

  • Map: Colecție de perechi cheie–valoare: cauți rapid o valoare după cheia ei (nume, cod, oraș).
  • Map.containsKey: containsKey verifică dacă o cheie există în map, iar containsValue dacă o valoare apare la vreo cheie.
  • Map.putIfAbsent: Returnează valoarea unei chei; dacă cheia lipsește, o calculează cu funcția dată, o salvează și o returnează.
  • Map.update: update schimbă valoarea unei chei pe baza valorii vechi; updateAll schimbă toate valorile din map.
  • List.operator[]: lista[i] citește elementul de pe poziția i; lista[i] = x îl înlocuiește.