mapOrNull<TResult extends Object?> method

  1. @optionalTypeArgs
TResult? mapOrNull<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
    )?,
})

A variant of map that fallback to returning null.

It is equivalent to doing:

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

Implementation

@optionalTypeArgs
TResult? mapOrNull<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,
}) {
  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 null;
  }
}