transition method
Perform transition by emitting event
.
Implementation
Transition<STATE, EVENT, SIDE_EFFECT> transition(EVENT event) {
final fromState = _currentState;
final transition = _getTransition(fromState, event);
switch(transition._value) {
case Invalid _:
return transition;
case Valid v:
var onStateExit = _getOnStateExit(fromState);
onStateExit?.call(fromState);
_currentState = v.toState;
var onStateEnter = _getOnStateEnter<STATE>(v.toState);
onStateEnter?.call(v.toState);
_controller.add(_currentState);
for (var onTransition in _graph.onTransitionListeners) {
onTransition(transition);
}
return transition;
}
}