ignoreEvent method
Ignore event based on current state and candidate event.
Usage Example
futureSystem
.ignoreEvent(
when: (state, event) => event is TriggerLoadData && state.loading
)
...
Above code shown if the system is already in loading status,
then upcoming TriggerLoadData
event will be ignored.
API Overview
This operator will intercept candidate event if condition is met.
system
.ignoreEvent(
when: (state, event) { // --> describe if candidate event should be ignored
// `state` is current state
// `event` is candidate event
// return true if we ignore the event
// return false if we pass the event
...
}
)
...
Implementation
System<State, Event> ignoreEvent({
required bool Function(State state, Event event) when,
}) => eventInterceptor<_IgnoreEventContext<State>>(
createContext: () => _IgnoreEventContext(),
updateContext: (context, state, oldState, event, dispatch) {
context.state = state;
},
interceptor: (context, dispatch, event) {
final shouldIgnoreEvent = when(context.state, event);
if (!shouldIgnoreEvent) {
dispatch(event);
}
}
);