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 StateErrorEn 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
- Escuchar con await for
- Streams individuales frente a broadcast
- Transformar streams: map, where y take
- Crear streams con async*