when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult cancel(
    1. @igFreezedJson Object? error,
    2. @igFreezedJson RequestOptions? options
    ),
  2. required TResult connectionTimeout(),
  3. required TResult sendTimeout(),
  4. required TResult receiveTimeout(),
  5. required TResult badCertificate(),
  6. required TResult connectionError(),
  7. required TResult badResponse(
    1. @igFreezedJson Response? response,
    2. int? statusCode
    ),
  8. required TResult businessException(
    1. String message,
    2. @igFreezedJson Object? error,
    3. @igFreezedJson 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);
  }
}