A Dart/Flutter monorepo that bridges Stream<T> and BLoC into Flutter's Listenable / ValueListenable interfaces.
Use any Stream or BlocBase with ListenableBuilder, ValueListenableBuilder, AnimatedBuilder, and other Listenable-based APIs — without rewriting your state management.
| Package | Description | pub.dev |
|---|---|---|
| stream_listenable | Core adapters and Stream extensions |
|
| bloc_listenable | BlocBase extensions (built on stream_listenable) |
// Stream -> ValueListenable
final counter = myStream.asValueListenable(initialValue: 0);
ValueListenableBuilder<int>(
valueListenable: counter,
builder: (context, value, child) => Text('$value'),
);
// BLoC -> ValueListenable
ValueListenableBuilder<int>(
valueListenable: myCubit.asValueListenable(),
builder: (context, value, child) => Text('$value'),
);