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 providedstate
. emit does nothing if thestate
being emitted is equal to the currentstate
.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 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 -
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited