StatefulCubit<Data> mixin Null safety

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:

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

Example usage:

class PageCubit extends Cubit<StatefulState<PageData>> with StatefulCubit {
  PageCubit() : super(StatefulState());

  void loadPage() => load(body: () {
    // data loading
    return Outcome.finished(PageData(/* data */));
Superclass Constraints


data → Data?
The current
state StatefulState<Data>
The current state.
read-only, inherited
stream Stream<StatefulState<Data>>
The current state stream.
read-only, inherited
isClosed bool
Whether the bloc is closed. [...]
read-only, inherited
hashCode int
The hash code for this object. [...]
read-only, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited


emitData(Data data) → void
Emits a state with passed data emulating the emit of a normal Cubit [...]
load({required FutureOr<Outcome<Data>?> body(), Data? initialData}) Future
Wrapper for a user defined loading logic that handles state setting [...]
submit({required FutureOr<Outcome<Data>?> body(), Data? initialData}) Future
Wrapper for a user defined submission logic that handles state setting [...]
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 the Stream<State> using the provided onData, onError and onDone handlers.
@Deprecated('Use stream.listen instead. Will be removed in v8.0.0'), inherited
emit(StatefulState<Data> state) → void
Updates the state to the provided state. emit does nothing if the instance has been closed or if the state being emitted is equal to the current state. [...]
onChange(Change<StatefulState<Data>> change) → void
Called whenever a change occurs with the given change. A change occurs when a new state is emitted. onChange is called before the state of the cubit is updated. onChange is a great spot to add logging/analytics for a specific cubit. [...]
@mustCallSuper, inherited
addError(Object error, [StackTrace? stackTrace]) → void
Reports an error which triggers onError with an optional StackTrace.
@mustCallSuper, inherited
onError(Object error, StackTrace stackTrace) → void
Called whenever an error occurs and notifies BlocObserver.onError. [...]
@mustCallSuper, @protected, 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.
@mustCallSuper, inherited
toString() String
A string representation of this object. [...]
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]


operator ==(Object other) bool
The equality operator. [...]