schedule<M> method
void
schedule<M>({
- M getMessage(
- TransitionHandlerContext<
D, C> ctx
- TransitionHandlerContext<
- M? message,
- Duration duration = const Duration(),
- bool periodic = false,
- String? label,
Schedules a message to be processed by the state machine when the transition occurs.
If getMessage is provided, the function will be evaluated when the scheduling occurs, and
the returned message will be posted. Otherwise a message must be provided.
The scheduling will be performed using TransitionContext.schedule. Refer to that method for further details of scheduling semantics.
This action can be labeled when formatting a state tree by providing a label.
Implementation
void schedule<M>({
M Function(TransitionHandlerContext<D, C> ctx)? getMessage,
M? message,
Duration duration = const Duration(),
bool periodic = false,
String? label,
}) {
if (getMessage == null && message == null) {
throw ArgumentError('getMessage or message must be provided');
} else if (getMessage != null && message != null) {
throw ArgumentError('One of getMessage or message must be provided');
}
//var messageName = StateBuilder._getMessageName(null, message);
var _getMessage = getMessage ?? (_) => message!;
var messageName =
StateBuilder._getMessageName(null, message) ?? TypeLiteral<D>().type.toString();
_descriptor = makeScheduleDescriptor<D, C, M>(
_getMessage,
duration,
periodic,
_makeContext,
_log,
messageName,
label,
);
}