bloc_listenable 1.0.0
bloc_listenable: ^1.0.0 copied to clipboard
Extensions to convert BLoC into Flutter's Listenable/ValueListenable interfaces. Built on stream_listenable.
import 'dart:async';
import 'package:bloc/bloc.dart';
import 'package:bloc_listenable/bloc_listenable.dart';
import 'package:flutter/material.dart';
class CounterCubit extends Cubit<int> {
CounterCubit() : super(0);
void increment() => emit(state + 1);
}
class CounterPage extends StatefulWidget {
const CounterPage({super.key});
@override
State<CounterPage> createState() => _CounterPageState();
}
class _CounterPageState extends State<CounterPage> {
final _cubit = CounterCubit();
@override
void dispose() {
unawaited(_cubit.close());
super.dispose();
}
@override
Widget build(BuildContext context) {
return Column(
children: [
ValueListenableBuilder<int>(
valueListenable: _cubit.asValueListenable(),
builder: (context, value, child) {
return Text('Count: $value');
},
),
ElevatedButton(
onPressed: _cubit.increment,
child: const Text('Increment'),
),
],
);
}
}