when<TResult extends Object?> method
TResult
when<TResult extends Object?>({
- required TResult cancel(
- Object? error,
- RequestOptions? options
- required TResult connectionTimeout(),
- required TResult sendTimeout(),
- required TResult receiveTimeout(),
- required TResult badCertificate(),
- required TResult connectionError(),
- required TResult badResponse(
- Response? response,
- int? statusCode
- required TResult businessException(
- String message,
- Object? error,
- StackTrace? stackTrace
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(@igFreezedJson Object? error,
@igFreezedJson RequestOptions? options)
cancel,
required TResult Function() connectionTimeout,
required TResult Function() sendTimeout,
required TResult Function() receiveTimeout,
required TResult Function() badCertificate,
required TResult Function() connectionError,
required TResult Function(
@igFreezedJson Response? response, int? statusCode)
badResponse,
required TResult Function(String message, @igFreezedJson Object? error,
@igFreezedJson StackTrace? stackTrace)
businessException,
}) {
final _that = this;
switch (_that) {
case BaseApiCancelException():
return cancel(_that.error, _that.options);
case BaseApiConnectionTimeoutException():
return connectionTimeout();
case BaseApiSendTimeoutException():
return sendTimeout();
case BaseApiReceiveTimeoutException():
return receiveTimeout();
case BaseApiBadCertificateException():
return badCertificate();
case BaseApiConnectionErrorException():
return connectionError();
case BaseApiBadResponseException():
return badResponse(_that.response, _that.statusCode);
case BaseApiBusinessException():
return businessException(_that.message, _that.error, _that.stackTrace);
}
}