when method

MachineDoneWhenBuilder<C> when(
  1. FutureOr<bool> condition(
    1. MessageHandlerContext<Object, MachineTreeStateData, C>
    ),
  2. void buildTrueHandler(
    1. MachineDoneHandlerBuilder<C> builder
    ), {
  3. String? label,
})

Adds a conditional behavior, in the same manner as MessageHandlerBuilder.when.

Implementation

MachineDoneWhenBuilder<C> when(
  FutureOr<bool> Function(
          MessageHandlerContext<Object, MachineTreeStateData, C>)
      condition,
  void Function(MachineDoneHandlerBuilder<C> builder) buildTrueHandler, {
  String? label,
}) {
  var conditions =
      <MessageConditionDescriptor<Object, MachineTreeStateData, C>>[];
  var whenBuilder = MachineDoneWhenBuilder<C>(
    () => MachineDoneHandlerBuilder<C>._(
        _forState, _makeContext, _log, _messageName),
    conditions,
  );

  whenBuilder.when(condition, buildTrueHandler, label: label);
  descriptor = makeWhenMessageDescriptor<Object, MachineTreeStateData, C>(
    _forState,
    conditions,
    _makeContext,
    _log,
    label,
    _messageName,
  );
  return whenBuilder;
}