when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult requestCancelled(),
  2. required TResult unauthorisedRequest(),
  3. required TResult unauthorisedRequestApple(),
  4. required TResult badRequest(),
  5. required TResult notFound(
    1. String reason
    ),
  6. required TResult methodNotAllowed(),
  7. required TResult notAcceptable(),
  8. required TResult requestTimeout(),
  9. required TResult sendTimeout(),
  10. required TResult conflict(),
  11. required TResult internalServerError(),
  12. required TResult notImplemented(),
  13. required TResult serviceUnavailable(),
  14. required TResult noInternetConnection(),
  15. required TResult formatException(),
  16. required TResult unableToProcess(),
  17. required TResult defaultError(
    1. String error
    ),
  18. required TResult unexpectedError(),
  19. required TResult otpExpired(),
})

A switch-like method, using callbacks.

As opposed to map, this offers destructuring. It is equivalent to doing:

switch (sealedClass) {
  case Subclass(:final field):
    return ...;
  case Subclass2(:final field2):
    return ...;
}

Implementation

@optionalTypeArgs TResult when<TResult extends Object?>({required TResult Function()  requestCancelled,required TResult Function()  unauthorisedRequest,required TResult Function()  unauthorisedRequestApple,required TResult Function()  badRequest,required TResult Function( String reason)  notFound,required TResult Function()  methodNotAllowed,required TResult Function()  notAcceptable,required TResult Function()  requestTimeout,required TResult Function()  sendTimeout,required TResult Function()  conflict,required TResult Function()  internalServerError,required TResult Function()  notImplemented,required TResult Function()  serviceUnavailable,required TResult Function()  noInternetConnection,required TResult Function()  formatException,required TResult Function()  unableToProcess,required TResult Function( String error)  defaultError,required TResult Function()  unexpectedError,required TResult Function()  otpExpired,}) {final _that = this;
switch (_that) {
case RequestCancelled():
return requestCancelled();case UnauthorisedRequest():
return unauthorisedRequest();case UnauthorisedRequestApple():
return unauthorisedRequestApple();case BadRequest():
return badRequest();case NotFound():
return notFound(_that.reason);case MethodNotAllowed():
return methodNotAllowed();case NotAcceptable():
return notAcceptable();case RequestTimeout():
return requestTimeout();case SendTimeout():
return sendTimeout();case Conflict():
return conflict();case InternalServerError():
return internalServerError();case NotImplemented():
return notImplemented();case ServiceUnavailable():
return serviceUnavailable();case NoInternetConnection():
return noInternetConnection();case FormatException():
return formatException();case UnableToProcess():
return unableToProcess();case DefaultError():
return defaultError(_that.error);case UnexpectedError():
return unexpectedError();case OtpExpired():
return otpExpired();case _:
  throw StateError('Unexpected subclass');

}
}