map<TResult extends Object?> method

  1. @optionalTypeArgs
TResult map<TResult extends Object?>({
  1. required TResult user(
    1. MessageOriginUser value
    ),
  2. required TResult hiddenUser(
    1. MessageOriginHiddenUser value
    ),
  3. required TResult chat(
    1. MessageOriginChat value
    ),
  4. required TResult channel(
    1. MessageOriginChannel 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(MessageOriginUser value) user,
  required TResult Function(MessageOriginHiddenUser value) hiddenUser,
  required TResult Function(MessageOriginChat value) chat,
  required TResult Function(MessageOriginChannel value) channel,
}) {
  final _that = this;
  switch (_that) {
    case MessageOriginUser():
      return user(_that);
    case MessageOriginHiddenUser():
      return hiddenUser(_that);
    case MessageOriginChat():
      return chat(_that);
    case MessageOriginChannel():
      return channel(_that);
  }
}