map<TResult extends Object?> method

  1. @optionalTypeArgs
TResult map<TResult extends Object?>({
  1. required TResult creator(
    1. ChatMemberOwner value
    ),
  2. required TResult administrator(
    1. ChatMemberAdministrator value
    ),
  3. required TResult member(
    1. ChatMemberMember value
    ),
  4. required TResult restricted(
    1. ChatMemberRestricted value
    ),
  5. required TResult left(
    1. ChatMemberLeft value
    ),
  6. required TResult kicked(
    1. ChatMemberBanned 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(ChatMemberOwner value) creator,
  required TResult Function(ChatMemberAdministrator value) administrator,
  required TResult Function(ChatMemberMember value) member,
  required TResult Function(ChatMemberRestricted value) restricted,
  required TResult Function(ChatMemberLeft value) left,
  required TResult Function(ChatMemberBanned value) kicked,
}) {
  final _that = this;
  switch (_that) {
    case ChatMemberOwner():
      return creator(_that);
    case ChatMemberAdministrator():
      return administrator(_that);
    case ChatMemberMember():
      return member(_that);
    case ChatMemberRestricted():
      return restricted(_that);
    case ChatMemberLeft():
      return left(_that);
    case ChatMemberBanned():
      return kicked(_that);
  }
}