whenWith<T> method

MessageHandlerWhenWithDataAndContextBuilder<M, D, T> whenWith<T>(
  1. FutureOr<T> context(
    1. MessageContext ctx,
    2. M message,
    3. D data
    ),
  2. FutureOr<bool> condition(
    1. MessageContext msgCtx,
    2. M msg,
    3. D data,
    4. T ctx,
    ),
  3. void buildTrueHandler(
    1. DataMessageHandlerBuilder<M, D>
    ), {
  4. String? label,
})

Implementation

MessageHandlerWhenWithDataAndContextBuilder<M, D, T> whenWith<T>(
  FutureOr<T> Function(MessageContext ctx, M message, D data) context,
  FutureOr<bool> Function(MessageContext msgCtx, M msg, D data, T ctx) condition,
  void Function(DataMessageHandlerBuilder<M, D>) buildTrueHandler, {
  String? label,
}) {
  var trueBuilder = DataMessageHandlerBuilder<M, D>(_forState, _messageName);
  buildTrueHandler(trueBuilder);
  var conditions = [
    _MessageConditionWithDataAndContext<M, D, T>(
      condition,
      trueBuilder._handler!,
      label,
    )
  ];
  _handler = _WhenWithContextDescriptor.createForMessageAndData<M, D, T>(context, conditions);
  return MessageHandlerWhenWithDataAndContextBuilder<M, D, T>(
      _forState, conditions, _messageName);
}