maybeWhen<TResult extends Object?> method

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