onResponse method

  1. @override
void onResponse(
  1. Response response,
  2. ResponseInterceptorHandler handler
)
override

Called when the response is about to be resolved.

Implementation

@override
void onResponse(
  Response response,
  ResponseInterceptorHandler handler,
) {
  final raw = extractData?.call(response) ?? response.data;
  final result = validatePayload(
    raw: raw,
    schema: schema,
    guard: guard,
  );

  switch (result) {
    case FlodSuccess(data: final data):
      handler.next(
        Response(
          requestOptions: response.requestOptions,
          data: _toResponseData(data),
          statusCode: response.statusCode,
          statusMessage: response.statusMessage,
          headers: response.headers,
          isRedirect: response.isRedirect,
          redirects: response.redirects,
          extra: response.extra,
        ),
      );
    case FlodFailure(errors: final errors):
      handler.reject(
        DioException(
          requestOptions: response.requestOptions,
          response: response,
          type: DioExceptionType.badResponse,
          error: ValidationException(errors),
          message: 'Response validation failed (${errors.length} error(s))',
        ),
      );
  }
}