0Pricing
Dart Academy · Lección

Streams individuales frente a broadcast

Elegir el stream adecuado para varios oyentes.

Streams individuales frente a broadcast es una lección gratuita de Dart Academy en CoddyKit. Esta es la lección 2 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.

Dos tipos de streams

Los streams de Dart son de dos tipos: single-subscription y broadcast. Elegir el adecuado depende de cuántos listeners necesite.

Streams de suscripción única

Un stream single-subscription permite exactamente un listener durante toda su existencia. Es el tipo predeterminado y resulta ideal para una secuencia de un solo uso, como leer un archivo. 📄

Escuchar una sola vez

Si intenta escuchar dos veces un stream de suscripción única, Dart lanza un StateError. El stream recuerda que ya tiene su único listener.

final s = Stream.fromIterable([1, 2]);
s.listen(print);
s.listen(print); // throws StateError

En búfer hasta que escucha

Un stream de suscripción única espera pacientemente. No produce eventos hasta que algo empieza a escucharlo, por lo que nunca se pierde ningún valor.

Streams broadcast

Un stream broadcast permite que muchos listeners se suscriban al mismo tiempo. Cada listener activo recibe los mismos eventos a medida que se emiten. 📡

Convertir a broadcast

Convierta un stream de suscripción única en uno compartido llamando a asBroadcastStream. Ahora varios listeners pueden conectarse a él.

final shared = source.asBroadcastStream();
shared.listen(print);
shared.listen((v) => log(v));

Los listeners tardíos pierden eventos

Los streams broadcast no almacenan eventos en búfer. Un listener que se suscribe late solo ve los eventos emitidos a partir de ese momento, nunca los anteriores.

Los controladores eligen el tipo

Un StreamController crea de forma predeterminada un stream de suscripción única. Use el constructor broadcast cuando quiera varios listeners.

final ctrl = StreamController<int>.broadcast();
ctrl.stream.listen(print);

Cuándo usar uno de suscripción única

Elija un stream single-subscription cuando los datos fluyan una sola vez hacia un consumidor, como los bytes de una respuesta de red o la lectura de un archivo.

Cuándo usar broadcast

Elija un stream broadcast para eventos continuos que interesen a varias partes de la aplicación, como pulsaciones de botones o actualizaciones de sensores en tiempo real.

Comprobar antes de escuchar

¿No está seguro de qué tipo tiene? La propiedad isBroadcast se lo indica, para que pueda evitar el StateError producido al escuchar dos veces un stream de suscripción única.

if (!stream.isBroadcast) {
  // only one listener allowed
}

Comprobación rápida

¿Qué stream es adecuado para muchos listeners?

Repaso

Los streams de suscripción única sirven a un listener y almacenan los eventos en búfer hasta que se leen; los streams broadcast sirven a muchos, pero no conservan los eventos anteriores. Elija según la cantidad de listeners. 🎉

Preguntas frecuentes

¿La lección «Streams individuales frente a broadcast» es gratis?

Sí — el texto completo de «Streams individuales frente a broadcast» 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 «Streams individuales frente a broadcast»?

Elegir el stream adecuado para varios oyentes. 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 2 de 4.

¿Cuánto tiempo toma la lección «Streams individuales frente a broadcast»?

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