maybeMap<TResult extends Object?> method

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