when method

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

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