BlocActionMixin<ACTION, S> mixin

General purpose mixin on BlocBase. Provides new method BlocActionMixin.dispatch, to emit new action event.

Adds new stream with elements of type ACTION, independent of o Bloc state. It can be useful, when widget should react on "Actions" like showing popups, toast, navigation etc. Emitted actions does not affect widget itself.

BlocActionMixin is easy to use and connect to existing BlocBase classes. Simply:

class MessageActionCubit extends Cubit<BuildState> with BlocActionMixin<String, BuildState> {
  ...
}

Handling actions on the widget side, is simple. Just use useActionListener, like so:

 @override
  Widget build(BuildContext context) {
    // Handle separate action stream with values other than a state type
    useActionListener(cubit, (String action) {
       //do sth with action
      _showMessage(context, action);
    });
   ...
  }

You can also filter your actions using actionWhen.

    useActionListener(
      cubit,
      (String action) {
        //do sth with filtered action
        _showMessage(context, action);
      },
      actionWhen: (previousAction, action) => true,
    });

See also ActionCubit and ActionBloc

Mixin Applications

Properties

actions Stream<ACTION>
no setter
actionStreamController StreamController<ACTION>
no setter
hashCode int
The hash code for this object.
no setterinherited
isClosed bool
Whether the bloc is closed.
no setterinherited
previousAction ↔ ACTION?
getter/setter pair
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
state → S
The current state.
no setterinherited
stream Stream<S>
The current stream of states.
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.
dispatch(ACTION action) → void
emit(S state) → void
Updates the state to the provided state. emit does nothing if the state being emitted is equal to the current state.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onChange(Change<S> 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
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited