BlocListener<B extends StateStreamable<S> , S> constructor
- required BlocWidgetListener<
S> listener, - Key? key,
- B? bloc,
- BlocListenerCondition<
S> ? listenWhen, - Widget? child,
Takes a BlocWidgetListener 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 BlocBuilder
.
If the bloc
parameter is omitted, BlocListener will automatically
perform a lookup using BlocProvider and the current BuildContext
.
BlocListener<BlocA, BlocAState>(
listener: (context, state) {
// do stuff here based on BlocA's state
},
child: Container(),
)
Only specify the bloc
if you wish to provide a bloc
that is otherwise
not accessible via BlocProvider and the current BuildContext
.
BlocListener<BlocA, BlocAState>(
value: blocA,
listener: (context, state) {
// do stuff here based on BlocA's state
},
child: Container(),
)
An optional listenWhen
can be implemented for more granular control
over when listener
is called.
listenWhen
will be invoked on each bloc
state
change.
listenWhen
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 BlocListener is initialized.
listenWhen
is optional and if omitted, it will default to true
.
BlocListener<BlocA, BlocAState>(
listenWhen: (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
},
child: Container(),
)
Implementation
const BlocListener({
required BlocWidgetListener<S> listener,
Key? key,
B? bloc,
BlocListenerCondition<S>? listenWhen,
Widget? child,
}) : super(
key: key,
child: child,
listener: listener,
bloc: bloc,
listenWhen: listenWhen,
);