onError method
Called when an exception was occurred during the request.
Implementation
@override
void onError(DioException err, ErrorInterceptorHandler handler) {
final requestId = err.requestOptions.extra['debug_request_id'] as String?;
final existingRequest = requestId != null
? DebugNetworkLogger.requests.firstWhere(
(r) => r.id == requestId,
orElse: () => DebugNetworkRequest(
id: requestId,
url: err.requestOptions.uri.toString(),
method: _parseMethod(err.requestOptions.method),
headers: err.requestOptions.headers,
body: err.requestOptions.data,
requestTime: DateTime.now(),
),
)
: null;
if (existingRequest != null) {
final updatedRequest = existingRequest.copyWith(
statusCode: err.response?.statusCode,
responseHeaders: err.response?.headers.map.map((k, v) => MapEntry(k, v.join(', '))),
responseBody: err.response?.data,
responseTime: DateTime.now(),
durationMs: existingRequest.requestTime.difference(DateTime.now()).inMilliseconds.abs(),
errorMessage: err.message ?? err.type.toString(),
isLoading: false,
);
DebugNetworkLogger.updateRequest(updatedRequest);
}
super.onError(err, handler);
}