stateful_bloc 1.0.0 stateful_bloc: ^1.0.0 copied to clipboard
Extension to the Bloc library that simplifies common state transition sequences
Use case #
Stateful extension is built to support data loading and submission
patterns which are commonly implemented using Bloc.
Each one of them usually consist of the following states:
SubjectInitial
, SubjectActionInProgress
, SubjectActionSuccess
, SubjectActionFailure
They are commonly used as follows:
SubjectInitial
is theinitialState
set in constructor- when the action is triggered the
SubjectActionInProgress
is set - some logic is executed to fetch / send / transform the data
- depending on the outcome
SubjectActionSuccess
/SubjectActionFailure
is set
This extension abstracts away both the state types and their transitions leaving only the logic to be supplied by the implementer.
Usage comparison #
Example of a generic cubit that provides state to a page, allowing it to display a loading indicator and error message
Cubit #
Pure cubit | Stateful cubit |
|
|
State #
Pure cubit state | Stateful state |
|
|
Advantages #
Main advantages of using the Stateful extension:
- Cubit / Bloc simplification - you don't have to worry about states, just focus on the logic and the data it changes
- State simplification - no more repeating the same inheritance tree for each component, just focus on the data that's being provided
- Uniform state types across the whole codebase - aside from
the standardization itself this makes it easier to reuse state dependent
widgets across multiple UI components (like showing a loading indicator
on
ActionStatus.ongoing
or an error message onActionStatus.failed
).
Maintainers #
License #
This library is licenced under MIT License