when method

MessageHandlerWhenBuilder<M, D, C> when(
  1. FutureOr<bool> condition(
    1. MessageHandlerContext<M, D, C>
    ),
  2. void buildTrue(
    1. MessageHandlerBuilder<M, D, C> builder
    ), {
  3. String? label,
})

Describes message handling behavior that may be run conditionally, sharing a context value among conditions.

The returned MessageHandlerWhenBuilder may be used to define additional conditional behavior, including a fallback MessageHandlerWhenBuilder.otherwise condition.

When the message is being processed, the condition functions are evaluated. If the function returns true, the behavior described by the buildTrue callback will take place. If more than one condition is defined, the conditions are evaluated in the order they are defined by calls to MessageHandlerWhenBuilder.when.

Implementation

MessageHandlerWhenBuilder<M, D, C> when(
  FutureOr<bool> Function(MessageHandlerContext<M, D, C>) condition,
  void Function(MessageHandlerBuilder<M, D, C> builder) buildTrue, {
  String? label,
}) {
  var conditions = <MessageConditionDescriptor<M, D, C>>[];
  var whenBuilder = MessageHandlerWhenBuilder<M, D, C>(
    () => MessageHandlerBuilder<M, D, C>(_forState, _makeContext, _log, _messageName),
    conditions,
  );

  whenBuilder.when(condition, buildTrue, label: label);
  descriptor =
      makeWhenMessageDescriptor<M, D, C>(conditions, _makeContext, _log, label, _messageName);
  return whenBuilder;
}