map<TResult extends Object?> method

  1. @optionalTypeArgs
TResult map<TResult extends Object?>({
  1. required TResult text(
    1. InputTextMessageContent value
    ),
  2. required TResult location(
    1. InputLocationMessageContent value
    ),
  3. required TResult venue(
    1. InputVenueMessageContent value
    ),
  4. required TResult contact(
    1. InputContactMessageContent value
    ),
  5. required TResult invoice(
    1. InputInvoiceMessageContent value
    ),
})

A switch-like method, using callbacks.

Callbacks receives the raw object, upcasted. It is equivalent to doing:

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

Implementation

@optionalTypeArgs
TResult map<TResult extends Object?>({
  required TResult Function(InputTextMessageContent value) text,
  required TResult Function(InputLocationMessageContent value) location,
  required TResult Function(InputVenueMessageContent value) venue,
  required TResult Function(InputContactMessageContent value) contact,
  required TResult Function(InputInvoiceMessageContent value) invoice,
}) {
  final _that = this;
  switch (_that) {
    case InputTextMessageContent():
      return text(_that);
    case InputLocationMessageContent():
      return location(_that);
    case InputVenueMessageContent():
      return venue(_that);
    case InputContactMessageContent():
      return contact(_that);
    case InputInvoiceMessageContent():
      return invoice(_that);
  }
}