whenOrNull<R> method

R? whenOrNull<R>({
  1. R unauthenticated()?,
  2. R authenticating()?,
  3. R authenticated(
    1. T user
    )?,
  4. R error(
    1. Object error,
    2. StackTrace stackTrace
    )?,
})

Pattern-matches and returns null for unhandled states.

Implementation

R? whenOrNull<R>({
  R Function()? unauthenticated,
  R Function()? authenticating,
  R Function(T user)? authenticated,
  R Function(Object error, StackTrace stackTrace)? error,
}) {
  return switch (this) {
    AuthUnauthenticated<T>() => unauthenticated?.call(),
    AuthAuthenticating<T>() => authenticating?.call(),
    AuthAuthenticated<T>(:final user) => authenticated?.call(user),
    AuthError<T>(error: final err, stackTrace: final st) =>
      error?.call(err, st),
  };
}