maybeMap<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
  1. TResult forceReply(
    1. ForceReply value
    )?,
  2. TResult inlineKeyboard(
    1. InlineKeyboardMarkup value
    )?,
  3. TResult keyboard(
    1. ReplyKeyboardMarkup value
    )?,
  4. TResult keyboardRemove(
    1. ReplyKeyboardRemove value
    )?,
  5. required TResult orElse(),
})

A variant of map that fallback to returning orElse.

It is equivalent to doing:

switch (sealedClass) {
  case final Subclass value:
    return ...;
  case _:
    return orElse();
}

Implementation

@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
  TResult Function(ForceReply value)? forceReply,
  TResult Function(InlineKeyboardMarkup value)? inlineKeyboard,
  TResult Function(ReplyKeyboardMarkup value)? keyboard,
  TResult Function(ReplyKeyboardRemove value)? keyboardRemove,
  required TResult orElse(),
}) {
  final _that = this;
  switch (_that) {
    case ForceReply() when forceReply != null:
      return forceReply(_that);
    case InlineKeyboardMarkup() when inlineKeyboard != null:
      return inlineKeyboard(_that);
    case ReplyKeyboardMarkup() when keyboard != null:
      return keyboard(_that);
    case ReplyKeyboardRemove() when keyboardRemove != null:
      return keyboardRemove(_that);
    case _:
      return orElse();
  }
}