mapOrNull<TResult extends Object?> method

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

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(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,
}) {
  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 null;
  }
}