Map.forEach în Dart

Cheamă o funcție pentru fiecare pereche cheie–valoare din map, în ordinea din map.

Sintaxă
void forEach(void action(K key, V value))

Ce face Map.forEach

forEach parcurge map-ul și cheamă funcția cu doi parametri: cheia și valoarea. Este forma scurtă pentru for (final e in map.entries).

În interiorul funcției nu poți folosi break sau return pentru a opri parcurgerea; dacă trebuie să te oprești, folosește o buclă for pe entries.

Parametri

Parametru Descriere
action Funcția chemată pentru fiecare pereche, cu cheia și valoarea.

Ce returnează

Nimic (void).

Exemple

Exemplul 1: Afișarea unui meniu

void main() {
  final meniu = {'ciorbă de burtă': 18.0, 'sarmale': 32.5, 'papanași': 21.0};
  meniu.forEach((fel, pret) {
    print('${fel.padRight(16)} ${pret.toStringAsFixed(2)} lei');
  });
}

Rezultat

ciorbă de burtă  18.00 lei
sarmale          32.50 lei
papanași         21.00 lei

Exemplul 2: Calcul de totaluri

void main() {
  final vanzari = {'luni': 1200, 'marți': 950, 'miercuri': 1430};
  var total = 0;
  var maxZi = '';
  vanzari.forEach((zi, suma) {
    total += suma;
    if (maxZi.isEmpty || suma > vanzari[maxZi]!) maxZi = zi;
  });
  print('Total: $total lei, cea mai bună zi: $maxZi');
}

Rezultat

Total: 3580 lei, cea mai bună zi: miercuri

Greșeli frecvente

  • Adaugi sau ștergi chei în funcția din forEach. Apare ConcurrentModificationError.
  • Scrii o funcție cu un singur parametru: map.forEach((e) => ...). Funcția trebuie să primească două valori, cheia și valoarea.

Comenzi înrudite

  • Map.keys: keys, values și entries dau cheile, valorile sau perechile unui map, ca Iterable, în ordinea din map.
  • Iterable.forEach: Apelează o funcție pentru fiecare element, în ordine.
  • Map.map: Creează un map nou transformând fiecare pereche într-o pereche nouă, cu alte chei sau alte valori.