Anwendung von Callbackfunktionen in Maps - flutter-tutorial-de/dart-programming GitHub Wiki

Table of Contents

Links

Einfach verständliche Methoden

Ausführbar in dartpad.dev:

void say(String prefix, Map map){
  print(map.keys.fold('= $prefix:', (prev, element) => '$prev\n $element: ${map[element]}'));
}
void main(){
 final map = <String, String>{ 'Deutschland' : 'Berlin', 'Italien': 'Rom', 'Österreich': 'Wien' };
 say('Land und Hauptstadt', map);
 map.forEach((key, value) => print('Die Hauptstadt von $key ist $value.'));
 map.removeWhere((key, value) => value.contains('e'));
 say('Ohne Hauptstädte mit "e"', map);
}
  • map.keys.fold('= $prefix:', (prev, element) => '$prev\n $element: ${map[element]}')
    • map.keys liefert eine Liste mit allen Schlüsseln.
    • Diese Schlüssel werden mit der Methode fold ausgewertet: Es wird ein String zusammengesetzt, der alle Schlüssel-Wert-Paare als String zusammensetzt.
    • Dieser String wird ausgegeben.
  • map.forEach((key, value) => print('Die Hauptstadt von $key ist $value.')); Es werden alle Schlüssel-Wert-Paare in einer Schleife mit der Callbackfunktion behandelt, die den Satz Die Hauptstadt von $key ist $value. ausgibt.
  • Die Methode removeWhere() löscht alle Elemente, für die die Callbackfunktion den Wert true zurückgibt. Die Callbackfunktion hat als Parameter den Schlüssel und den Wert des aktuellen Map-Eintrags.

Aus einer Map eine andere Map erzeugen: map()

void say(String prefix, Map map){
  print(map.keys.fold('= $prefix:', (prev, element) => '$prev\n $element: ${map[element]}'));
}
void main(){
 final map = <String, String>{ 'Deutschland' : 'Berlin', 'Italien': 'Rom', 'Österreich': 'Wien' };
 final map2 = <String, String>{ 'Deutschland' : 'deutsch', 'Italien': 'italienisch', 'Österreich': 'deutsch' };
 say('Land und Hauptstadt', map);
 say('Land und Sprache', map2);
 final map3 = map.map((key, value) => MapEntry(map[key], map2[key]));
 say('Hauptstadt und Sprache', map3);
}
  • Aus den zwei Maps map und map2 wird eine neue Map map3 erzeugt.
  • map.map() ruft die Callbackfunktion für jedes Schlüssel-Wert-Paar auf. Diese Callbackfunktion baut aus dem Wert von map und dem Wert von map2 ein neues Schlüssel-Wert-Paar für map3.

Eine Map ergänzen: putIfAbsent()

void say(String prefix, Map map){
  print(map.keys.fold('= $prefix:', (prev, element) => '$prev\n $element: ${map[element]}'));
}
void main(){
  final scores = <String, int>{ 'Bob': 30, 'Charly': 40, 'Eve': 22};
  say('Incomplete', scores);
  for (var user in ['Adam', 'Bob', 'Charly', 'Dave', 'Eve']){
    scores.putIfAbsent(user, () => 0);
  }
  say('Complete', scores);
}
  • Die Orginalliste hat drei Einträge.
  • for (var user in ['Adam', 'Bob', 'Charly', 'Dave', 'Eve']) Hier tauchen zwei zusätzliche Benutzer auf: 'Adam' und 'Dave'.
  • scores.putIfAbsent(user, () => 0) Für die zusätzlichen Benutzer, wenn also der Schlüssel noch nicht existiert, werden neue Einträge generiert, mit dem user als Schlüssel und dem Wert 0.
⚠️ **GitHub.com Fallback** ⚠️