StatefulCubit<Data> mixin
A cubit that abstracts and handles loading and submission states
Simplifies state management by handling its status. It's designed to be easily integrable and flexible extension that automatically tracks and sets the commonly used page state types using enum fields instead of the usual inheritance tree.
Steps to use:
- mix with StatefulBloc / StatefulCubit
- wrap your state with StatefulState
- wrap your logic with load / submit
You can react to the current status in your widgets (like showing a loading indicator on ActionStatus.ongoing or an error message on ActionStatus.failed). Your state is accessible in StatefulState.data.
Example usage:
class PageCubit extends Cubit<StatefulState<PageData>> with StatefulCubit {
PageCubit() : super(StatefulState());
void loadPage() => load(body: () {
// data loading
return Outcome.finished(PageData(/* data */));
});
}
Properties
- data → Data?
-
The current
state.data
no setter - hashCode → int
-
The hash code for this object.
no setterinherited
- isClosed → bool
-
Whether the bloc is closed.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
state
→ StatefulState<
Data> -
The current state.
no setterinherited
-
stream
→ Stream<
StatefulState< Data> > -
The current state stream.
no setterinherited
Methods
-
addError(
Object error, [StackTrace? stackTrace]) → void -
Reports an
error
which triggers onError with an optional StackTrace.inherited -
close(
) → Future< void> -
Closes the instance.
This method should be called when the instance is no longer needed.
Once close is called, the instance can no longer be used.
inherited
-
emit(
StatefulState< Data> state) → void -
Updates the
state
to the providedstate
. emit does nothing if the instance has been closed or if thestate
being emitted is equal to the currentstate
.inherited -
emitData(
Data data) → void -
Emits a state with passed
data
emulating the emit of a normalCubit
-
listen(
void onData(StatefulState< Data> )?, {Function? onError, void onDone()?, bool? cancelOnError}) → StreamSubscription<StatefulState< Data> > -
Adds a subscription to the
Stream<State>
. Returns a StreamSubscription which handles events from theStream<State>
using the providedonData
,onError
andonDone
handlers.inherited -
load(
{required FutureOr< Outcome< body(), Data? initialData}) → FutureData> ?> - Wrapper for a user defined loading logic that handles state setting
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
onChange(
Change< StatefulState< change) → voidData> > -
Called whenever a
change
occurs with the givenchange
. Achange
occurs when a newstate
is emitted. onChange is called before thestate
of thecubit
is updated. onChange is a great spot to add logging/analytics for a specificcubit
.inherited -
onError(
Object error, StackTrace stackTrace) → void -
Called whenever an
error
occurs and notifiesBlocObserver.onError
.inherited -
submit(
{required FutureOr< Outcome< body(), Data? initialData}) → FutureData> ?> - Wrapper for a user defined submission logic that handles state setting
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited