Dart Academy · Lección

Transformar streams: map, where y take

Reestructurar una secuencia de eventos.

Lección 3 de 413 pasos

Transformar streams: map, where y take es una lección gratuita de Dart Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Dart Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Dart Academy incluye 4 lecciones en total.

Los streams se pueden transformar

Al igual que las listas, los streams tienen métodos útiles que modifican sus eventos. Puede transform un stream en uno nuevo sin modificar el original.

map transforma cada evento

El método map ejecuta una función sobre cada evento y emite el resultado. Convierte un stream de valores en un stream de valores transformados.

final doubled = numbers.map((n) => n * 2);

map conserva la cantidad

Con map, la cantidad de eventos permanece igual; solo cambia su forma. Tres entradas siempre producen exactamente tres salidas. ✨

Stream.fromIterable([1, 2, 3])
    .map((n) => 'Item $n');

where filtra eventos

El método where conserva únicamente los eventos que superan una prueba. Todo lo que devuelve false se descarta del nuevo stream.

final evens = numbers.where((n) => n.isEven);

where puede reducir el stream

A diferencia de map, where puede emitir menos eventos de los que recibe. Si nada supera la prueba, el stream resultante permanece vacío.

take limita la cantidad

El método take emite solo los primeros n eventos y después deja de escuchar. Es perfecto cuando solo necesita algunos valores de un stream largo. 🎯

final firstThree = bigStream.take(3);

take cancela antes

Después de entregar sus n eventos, take cancela automáticamente su suscripción al stream original. El stream original deja de producir eventos para usted.

Encadenar transformaciones

Estos métodos devuelven nuevos streams, por lo que puede chain ellos. Lea la cadena de izquierda a derecha: filtrar, transformar y limitar.

numbers
    .where((n) => n.isEven)
    .map((n) => n * 10)
    .take(2);

De forma diferida por naturaleza

Las transformaciones son lazy: no se ejecuta nada hasta que escucha. La cadena solo procesa los eventos a medida que llegan, uno por uno.

Más herramientas: takeWhile y skip

Además de las tres principales, takeWhile emite eventos hasta que una prueba falla, y skip ignora los primeros n eventos. Se aplica el mismo estilo de encadenamiento.

stream.skip(2).takeWhile((n) => n < 100);

Consumir el resultado

Después de transformar, lea el nuevo stream con await for o escúchelo. Cada valor emitido ya ha pasado por toda la cadena.

await for (final v in transformed) {
  print(v);
}

Comprobación rápida

¿Qué método puede reducir la cantidad de eventos?

Repaso

Puede modificar los streams con map para transformar, where para filtrar y take para limitar; todos se pueden encadenar y se ejecutan de forma diferida hasta que escucha. 🎉

Gratis para empezar

Aprende Dart con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Transformar streams: map, where y take» es gratis?

Sí — el texto completo de «Transformar streams: map, where y take» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Dart Academy, actualiza a CoddyKit PRO. El curso de Dart Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Transformar streams: map, where y take»?

Reestructurar una secuencia de eventos. Practicas Dart Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Dart Academy?

No se requiere experiencia previa. Dart Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Transformar streams: map, where y take»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Dart Academy?

Sí. Cada lección de Dart Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Escuchar con await for
  2. Streams individuales frente a broadcast
  3. Transformar streams: map, where y take
  4. Crear streams con async*
← Volver a Dart Academy