D
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

AspectSingle-subscriptionBroadcast
ListenersExactly 1 at a timeMultiple simultaneous
BufferingBuffers until listener attachesEvents are lost without listener
Use caseFile I/O, HTTP responsesUser events, sensors, BLoC streams
CreationStreamController()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