onError method
Called when an exception was occurred during the request.
Implementation
@override
void onError(DioException err, ErrorInterceptorHandler handler) {
final httpError = NetworkHttpError()..error = err.toString();
if (err is Error) {
final basicError = err as Error;
httpError.stackTrace = basicError.stackTrace;
}
networkCore.addError(httpError, err.requestOptions.hashCode);
final httpResponse = NetworkHttpResponse()..time = DateTime.now();
if (err.response == null) {
httpResponse.status = -1;
networkCore.addResponse(
httpResponse,
err.requestOptions.hashCode,
);
} else {
httpResponse.status = err.response!.statusCode;
if (err.response!.data == null) {
httpResponse
..body = ''
..size = 0;
} else {
httpResponse
..body = err.response!.data
..size = utf8.encode(err.response!.data.toString()).length;
}
final headers = <String, String>{};
err.response!.headers.forEach((header, values) {
headers[header] = values.toString();
});
httpResponse.headers = headers;
networkCore.addResponse(
httpResponse,
err.response!.requestOptions.hashCode,
);
networkCore.addLog(
NetworkLog(
message: err.toString(),
level: DiagnosticLevel.error,
error: err,
stackTrace: err.stackTrace,
),
);
}
handler.next(err);
}