Dart LanguageIntermediate30 XP5 min read
What are Dart Streams and how do single-subscription vs broadcast streams differ?
TL;DR: A Dart Stream is an asynchronous sequence of events. Single-subscription streams (default) allow only one listener and buffer events; broadcast streams allow multiple listeners but don't buffer.
Full Answer
| Aspect | Single-subscription | Broadcast |
|---|---|---|
| Listeners | Exactly 1 at a time | Multiple simultaneous |
| Buffering | Buffers until listener attaches | Events are lost without listener |
| Use case | File I/O, HTTP responses | User events, sensors, BLoC streams |
| Creation | StreamController() | StreamController.broadcast() |
โ ๏ธ
Always cancel StreamSubscriptions in dispose() to prevent memory leaks. Failing to cancel a stream subscription is one of the most common Flutter memory leak sources.
Code Examples
dartStreamController and stream transformation
Output
Listener 1: 4 Listener 2: 4 Listener 1: 8 Listener 2: 8
Interview Tip
๐ก
BLoC pattern uses broadcast streams for state โ multiple widgets can listen to the same Bloc's stream. StreamBuilder in Flutter uses a single-subscription stream internally and manages the subscription lifecycle.
#stream#broadcast#streamcontroller#listen#async