maybeMap<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
  1. TResult text(
    1. InputTextMessageContent value
    )?,
  2. TResult location(
    1. InputLocationMessageContent value
    )?,
  3. TResult venue(
    1. InputVenueMessageContent value
    )?,
  4. TResult contact(
    1. InputContactMessageContent value
    )?,
  5. TResult invoice(
    1. InputInvoiceMessageContent value
    )?,
  6. 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(InputTextMessageContent value)? text,
  TResult Function(InputLocationMessageContent value)? location,
  TResult Function(InputVenueMessageContent value)? venue,
  TResult Function(InputContactMessageContent value)? contact,
  TResult Function(InputInvoiceMessageContent value)? invoice,
  required TResult orElse(),
}) {
  final _that = this;
  switch (_that) {
    case InputTextMessageContent() when text != null:
      return text(_that);
    case InputLocationMessageContent() when location != null:
      return location(_that);
    case InputVenueMessageContent() when venue != null:
      return venue(_that);
    case InputContactMessageContent() when contact != null:
      return contact(_that);
    case InputInvoiceMessageContent() when invoice != null:
      return invoice(_that);
    case _:
      return orElse();
  }
}