bloc 0.7.3 bloc: ^0.7.3 copied to clipboard
The goal of this package is to make it easy to implement the BLoC (Business Logic Component) design pattern.
import 'package:bloc/bloc.dart';
abstract class CounterEvent {}
class Increment extends CounterEvent {
@override
String toString() => 'Increment';
}
class Decrement extends CounterEvent {
@override
String toString() => 'Decrement';
}
class CounterBloc extends Bloc<CounterEvent, int> {
@override
int get initialState => 0;
@override
Stream<int> mapEventToState(int state, CounterEvent event) async* {
if (event is Increment) {
/// Simulating Network Latency
await Future<void>.delayed(Duration(seconds: 1));
yield state + 1;
}
if (event is Decrement) {
/// Simulating Network Latency
await Future<void>.delayed(Duration(milliseconds: 500));
yield state - 1;
}
}
}
class SimpleBlocDelegate implements BlocDelegate {
@override
void onTransition(Transition transition) {
print(transition.toString());
}
}
void main() {
BlocSupervisor().delegate = SimpleBlocDelegate();
final counterBloc = CounterBloc();
counterBloc.dispatch(Increment());
counterBloc.dispatch(Increment());
counterBloc.dispatch(Increment());
counterBloc.dispatch(Decrement());
counterBloc.dispatch(Decrement());
counterBloc.dispatch(Decrement());
}