RxBlocListener<B extends RxBlocTypeBase, S> class
Takes a RxBlocWidgetListener and an optional bloc
and invokes the listener in response to state changes in the bloc.
It should be used for functionality that needs to occur only
in response to a state change
such as navigation, showing a SnackBar, showing a Dialog, etc...
The listener is guaranteed to only be called once for each state
change unlike the builder in RxBlocBuilder.
If the bloc parameter is omitted, RxBlocListener will automatically
perform a lookup using BlocProvider and the current BuildContext.
RxBlocListener<BlocA, String>(
state: (bloc) => bloc.state.details
listener: (context, state) {
// do stuff here based on BlocA's state
}
)
Only specify the bloc if you wish to provide a bloc that is otherwise
not accessible via RxBlocProvider and the current BuildContext.
RxBlocListener<BlocAType, String>(
bloc: blocA,
state: (bloc) => bloc.state.details
listener: (context, state) {
// do stuff here based on BlocA's state
}
)
An optional condition can be implemented for more granular control
over when listener is called.
The condition function will be invoked on each bloc state change.
The condition takes the previous state and current state and
must return a bool
which determines whether or not the listener function will be invoked.
The previous state will be initialized to the state of the bloc
when the RxBlocListener is initialized.
condition is optional and if it isn't implemented,
it will default to true.
RxBlocListener<BlocA, String>(
state: (bloc) => bloc.state.details,
condition: (previous, current) {
// return true/false to determine whether or not
// to invoke listener with state
},
listener: (context, state) {
// do stuff here based on BlocA's state
}
)
If an error occurs within the provided listened state, an optional onError callback will be triggered. In such case, the listener callback won't be executed. The onError function must be able to be called with either one positional argument, or with two positional arguments where the seconds is always a StackTrace.
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- SingleChildStatefulWidget
- RxBlocListenerBase<
B, S> - RxBlocListener
- Implemented types
Constructors
-
RxBlocListener({required RxBlocWidgetListener<
S> listener, required Stream<S> state(B), Key? key, B? bloc, RxBlocListenerCondition<S> ? condition, dynamic onWaiting(BuildContext, S?)?, void onError(BuildContext, Object, StackTrace)?, dynamic onComplete(BuildContext)?, S? initialValue, Widget child = const SizedBox()}) -
Takes a RxBlocWidgetListener and an optional
blocand invokes thelistenerin response tostatechanges in thebloc. It should be used for functionality that needs to occur only in response to astatechange such as navigation, showing a SnackBar, showing a Dialog, etc... Thelisteneris guaranteed to only be called once for eachstatechange unlike thebuilderin RxBlocBuilder.const
Properties
- bloc → B?
-
The bloc whose state will be listened to.
Whenever the bloc's state changes, listener will be invoked.
finalinherited
- child → Widget?
-
The widget which will be rendered as a descendant
of the RxBlocListenerBase.
finalinherited
-
condition
→ RxBlocListenerCondition<
S> ? -
The RxBlocListenerCondition that the RxBlocListenerBase will invoke.
The condition function will be invoked on each bloc state change.
The condition takes the previous state and current state and
must return a bool
which determines whether or not the listener function will be invoked.
The previous state will be initialized to state
when the RxBlocListenerBase is initialized.
condition is optional and if it isn't implemented,
it will default to
true.finalinherited - hashCode → int
-
The hash code for this object.
no setterinherited
- initialValue → S?
-
Initial value used in the onWaiting callback.
finalinherited
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
-
listener
→ RxBlocWidgetListener<
S> -
The RxBlocWidgetListener which will be called on every state change.
This listener should be used for any code which needs to execute
in response to a state change (
Transition). The state will be thenextStatefor the most recentTransition.finalinherited - onComplete → dynamic Function(BuildContext)?
-
Callback executed once the listened state stops emitting values.
finalinherited
- onError → void Function(BuildContext, Object, StackTrace)?
-
Callback triggered once any error happens on the listened stream.
finalinherited
- onWaiting → dynamic Function(BuildContext, S?)?
-
Callback triggered once the widget has subscribed to the stream but the
stream hasn't emitted any values yet. If initialValue has been specified
it will be available as the second argument of the callback.
finalinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
state
→ Stream<
S> Function(B) -
Stream representing the state which will be listened to for changes
finalinherited
Methods
-
createElement(
) → SingleChildStatefulElement -
Creates a StatefulElement to manage this widget's location in the tree.
inherited
-
createState(
) → SingleChildState< RxBlocListenerBase< B, S> > -
Creates the mutable state for this widget at a given location in the tree.
inherited
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of DiagnosticsNode objects describing this node's
children.
inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toDiagnosticsNode(
{String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep.
inherited
-
toString(
{DiagnosticLevel minLevel = DiagnosticLevel.info}) → String -
A string representation of this object.
inherited
-
toStringDeep(
{String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String -
Returns a string representation of this node and its descendants.
inherited
-
toStringShallow(
{String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a one-line detailed description of the object.
inherited
-
toStringShort(
) → String -
A short, textual description of this widget.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited