maybeMap<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
  1. TResult withAccessToken(
    1. UpdatePasswordRequestWithAccessToken value
    )?,
  2. TResult withFreshAccessToken(
    1. UpdatePasswordRequestWithFreshAccessToken value
    )?,
  3. TResult withEmail(
    1. UpdatePasswordRequestWithEmail value
    )?,
  4. TResult withPhoneNumber(
    1. UpdatePasswordRequestWithPhoneNumber value
    )?,
  5. 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(UpdatePasswordRequestWithAccessToken value)?
      withAccessToken,
  TResult Function(UpdatePasswordRequestWithFreshAccessToken value)?
      withFreshAccessToken,
  TResult Function(UpdatePasswordRequestWithEmail value)? withEmail,
  TResult Function(UpdatePasswordRequestWithPhoneNumber value)?
      withPhoneNumber,
  required TResult orElse(),
}) {
  final _that = this;
  switch (_that) {
    case UpdatePasswordRequestWithAccessToken() when withAccessToken != null:
      return withAccessToken(_that);
    case UpdatePasswordRequestWithFreshAccessToken()
        when withFreshAccessToken != null:
      return withFreshAccessToken(_that);
    case UpdatePasswordRequestWithEmail() when withEmail != null:
      return withEmail(_that);
    case UpdatePasswordRequestWithPhoneNumber() when withPhoneNumber != null:
      return withPhoneNumber(_that);
    case _:
      return orElse();
  }
}