maybeWhen<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
  1. TResult cancel(
    1. Object? error,
    2. RequestOptions? options
    )?,
  2. TResult connectionTimeout()?,
  3. TResult sendTimeout()?,
  4. TResult receiveTimeout()?,
  5. TResult badCertificate()?,
  6. TResult connectionError()?,
  7. TResult badResponse(
    1. Response? response,
    2. int? statusCode
    )?,
  8. TResult businessException(
    1. String message,
    2. Object? error,
    3. StackTrace? stackTrace
    )?,
  9. required TResult orElse(),
})

A variant of when that fallback to an orElse callback.

It is equivalent to doing:

switch (sealedClass) {
  case Subclass(:final field):
    return ...;
  case _:
    return orElse();
}

Implementation

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