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:

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 provided state. emit does nothing if the instance has been closed or if the state being emitted is equal to the current state.
inherited
emitData(Data data) → void
Emits a state with passed data emulating the emit of a normal Cubit
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.
inherited
load({required FutureOr<Outcome<Data>?> body(), Data? initialData}) Future
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<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.
inherited
onError(Object error, StackTrace stackTrace) → void
Called whenever an error occurs and notifies BlocObserver.onError.
inherited
submit({required FutureOr<Outcome<Data>?> body(), Data? initialData}) Future
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