ex_bloc 0.1.7 ex_bloc: ^0.1.7 copied to clipboard
ExBloc provide simple way to organize bloc middleware and dispatch events.
ex_bloc #
ExBloc provide simple way to organize bloc middleware and dispatch events.
Usage #
Import #
import 'package:ex_bloc/ex_bloc.dart';
Get ExStore #
final store = ExStore.instance;
Simple state #
class TestState {
final bool afterInitial;
const TestState({this.afterInitial});
factory TestState.initial() {
return const TestState(afterInitial: false);
}
}
Simple bloc #
ExBloc
does not contain business logic.
ServiceModel
should contain third party dependencies or EmptyServiceModel
if there are no third party dependencies.
class TestBloc extends ExBloc<TestEvent, TestState, EmptyServiceModel> {
TestBloc(EmptyServiceModel sm) : super(sm);
@override
TestState get initialState => TestState.initial();
}
Event #
ExEvent
provide business logic and payload
ExStore
provide ability to dispatch other events or get other states.
class TestEvent extends ExEvent<TestState, EmptyServiceModel> {
@override
Stream<TestState> call(
ExStore store, TestState state, EmptyServiceModel sm) async* {
yield TestState(afterInitial: true);
}
}
Dispatch events #
store.dispatch(TestEvent());
or
TestEvent().dispatch();
Get state from ExStore #
final store = ExStore.instance;
final testState = store.getState<TestState>();
Relesect usage #
Reselect can be used if needed
final testStateSelector = (ExStore store) => store.getState<TestState>();
final afterInitialSelector = createSelector1(
testStateSelector,
(TestState testState) => testState.afterInitial,
);