post<M> method
void
post<M>({
- FutureOr<
M> getMessage(- TransitionHandlerContext<
D, C> ctx
- TransitionHandlerContext<
- M? message,
- String? label,
Posts a message to be processed by the state machine when the transition occurs.
If getMessage is provided, the function will be evaluated when the transition occurs, and
the returned message will be posted. Otherwise a message must be provided.
var state1 = StateKey('s1');
var builder = StateTreeBuilder(initialState: state1);
builder.state(state1, (b) {
// Post a MyMessage message when this state is entered.
b.onEnter((b) => b.post(getMessage: (ctx) => MyMessage()));
});
This action can be labeled when formatting a state tree by providing a label.
Implementation
void post<M>({
FutureOr<M> Function(TransitionHandlerContext<D, C> ctx)? getMessage,
M? message,
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 _getMessage = getMessage ?? (_) => message!;
var messageName =
StateBuilder._getMessageName(null, message) ?? TypeLiteral<D>().type.toString();
_descriptor = makePostDescriptor<D, C, M>(
_getMessage,
_makeContext,
_log,
messageName,
label,
);
}