Streams transformieren: map, where, take
Eine Ereignisfolge umformen
Streams transformieren: map, where, take ist eine kostenlose Dart Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Dart Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Dart Academy-Kurs umfasst insgesamt 4 Lektionen.
Streams lassen sich transformieren
Genau wie Listen verfügen Streams über praktische Methoden, mit denen sich ihre Ereignisse umformen lassen. Sie können einen Stream in einen neuen transformieren, ohne die Quelle zu verändern.
map transformiert jedes Ereignis
Die Methode map führt für jedes Ereignis eine Funktion aus und gibt das Ergebnis aus. So wird aus einem Stream von Werten ein Stream transformierter Werte.
final doubled = numbers.map((n) => n * 2);map behält die Anzahl bei
Bei map bleibt die Anzahl der Ereignisse gleich; nur ihre Form ändert sich. Aus drei Eingaben entstehen immer genau drei Ausgaben. ✨
Stream.fromIterable([1, 2, 3])
.map((n) => 'Item $n');where filtert Ereignisse
Die Methode where behält nur Ereignisse bei, die einen Test bestehen. Alles, was false zurückgibt, wird aus dem neuen Stream entfernt.
final evens = numbers.where((n) => n.isEven);where kann den Stream verkleinern
Im Gegensatz zu map kann where weniger Ereignisse ausgeben, als es erhalten hat. Wenn kein Ereignis den Test besteht, bleibt der resultierende Stream leer.
take begrenzt die Anzahl
Die Methode take gibt nur die ersten n Ereignisse aus und beendet anschließend das Abhören. Sie ist ideal, wenn Sie aus einem langen Stream nur wenige Werte benötigen. 🎯
final firstThree = bigStream.take(3);take beendet vorzeitig
Nachdem take seine n Ereignisse geliefert hat, kündigt es automatisch das Abonnement der Quelle. Der ursprüngliche Stream erzeugt für Sie keine weiteren Ereignisse.
Transformationen verketten
Diese Methoden geben neue Streams zurück, sodass Sie sie verketten können. Lesen Sie die Kette von links nach rechts: filtern, dann transformieren, anschließend begrenzen.
numbers
.where((n) => n.isEven)
.map((n) => n * 10)
.take(2);Von Natur aus verzögert
Transformationen sind lazy: Nichts wird ausgeführt, bevor Sie den Stream abhören. Die Kette verarbeitet Ereignisse erst, wenn sie eintreffen, und zwar einzeln.
Weitere Werkzeuge: takeWhile und skip
Neben den drei grundlegenden Methoden gibt takeWhile Ereignisse aus, bis ein Test fehlschlägt, während skip die ersten n Ereignisse ignoriert. Dasselbe Prinzip der Verkettung gilt auch hier.
stream.skip(2).takeWhile((n) => n < 100);Das Ergebnis verwenden
Lesen Sie den neuen Stream nach der Transformation mit await for oder einem Listener. Jeder ausgegebene Wert hat bereits Ihre gesamte Kette durchlaufen.
await for (final v in transformed) {
print(v);
}Kurzer Wissenstest
Welche Methode kann die Anzahl der Ereignisse verringern?
Zusammenfassung
Mit map können Sie Streams transformieren, mit where filtern und mit take begrenzen. Alle Methoden lassen sich verketten und werden erst beim Abhören verzögert ausgeführt. 🎉
Häufig gestellte Fragen
Ist die Lektion „Streams transformieren: map, where, take“ kostenlos?
Ja — der vollständige Text von „Streams transformieren: map, where, take“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Dart Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Dart Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Streams transformieren: map, where, take“?
Eine Ereignisfolge umformen Du übst Dart Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Dart Academy zu starten?
Keine Vorkenntnisse erforderlich. Dart Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Streams transformieren: map, where, take“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Dart Academy-Lektion Code schreiben und ausführen?
Ja. Jede Dart Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Mit await for zuhören
- Single- und Broadcast-Streams
- Streams transformieren: map, where, take
- Streams mit async* erstellen