state_graph_bloc

Creator: coderz1093

Last updated:

0 purchases

TODO
Add to Cart

Description:

state graph bloc

state_graph_bloc #
State Graph Builder for Dart. Allows to define states, their transitions and side effects in a result of incoming events.
Inspired by Tinder's state machine Kotlin DSL and BLoC package.
Usage #
Build a bloc and subscribe with StreamBuilder or listen().
class DummyBloc extends StateGraphBloc<DummyEvent, DummyState> {
DummyBloc() : super(StateInitialising());

@override
StateGraph<DummyEvent, DummyState> buildGraph() =>
StateGraph<DummyEvent, DummyState>(
{
StateInitialising: {
LoadEvent: transitionWithSideEffect(
(state, event) => StateLoading(),
(state, event) {
// There could be some async loading. Use [launchFuture] or [launchStream]
// to fire async processing and properly handle bloc closing.
add(LoadingCompletedEvent());
},
),
},
StateLoading: {
LoadingCompletedEvent: transition((state, _) => StateReady(0)),
},
StateReady: {
IncrementEvent: transition(
(state, event) => StateReady((state as StateReady).counter + 1),
),
// Test global event override.
RestartEvent: transition((state, _) => StateReady(0)),
},
},
globalEvents: {
RestartEvent: transition((state, event) {
return StateInitialising();
})
},
);

// Bind some variables based on [state].
Stream<bool> isLoading() => bindState((state) {
if (state is StateLoading) {
return true;
} else {
return false;
}
});
}
copied to clipboard
Samples #
test directory contains all State Graph Bloc use cases.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.