errorHandler method

  1. @override
HttpError errorHandler(
  1. DioError err
)
override

Implementation

@override
HttpError errorHandler(DioError err) {
  int statusCode = err.response?.statusCode ?? 0;

  // classic error format
  // {
  //    "code": int,
  //    "message": "Message string",
  //    "data": <AnyType>
  // }
  if (err.response?.data is Map<String, dynamic> &&
      (err.response!.data as Map).containsKey(codeKey) &&
      (err.response!.data as Map)[codeKey] is int &&
      ((err.response!.data as Map)[codeKey] as int) != successCode) {
    return HttpError(
      requestOptions: err.requestOptions,
      response: err.response,
      type: err.type,
      error: err.error,
      statusCode: statusCode,
      errorCode: (err.response!.data as Map)[codeKey].toString(),
      errorMessage:
          (err.response!.data as Map)[messageKey]?.toString() ?? null,
      errorData: (err.response!.data as Map)[dataKey] ??
          (err.response!.data as Map)[dataKey],
    );
  }

  // other format
  return HttpError(
    requestOptions: err.requestOptions,
    response: err.response,
    type: err.type,
    error: err.error,
    statusCode: statusCode,
    errorCode: HttpErrorCode.unknownError,
    errorMessage: null,
    errorData: err.response?.data,
  );
}