onError method

  1. @override
void onError(
  1. DioException err,
  2. ErrorInterceptorHandler handler
)
override

Called when an exception was occurred during the request.

Implementation

@override
void onError(DioException err, ErrorInterceptorHandler handler) async {
  final request = err.requestOptions;
  final startTime = request.extra['startTime'] as DateTime?;
  final timestamp = startTime ?? DateTime.now();

  final log = SimpleOverlayNetworkLog(
    timestamp: timestamp,
    tag: request.path,
    method: request.method,
    url: request.uri.toString(),
    requestHeaders: Map<String, String>.from(
        request.headers.map((k, v) => MapEntry(k, v.toString()))),
    requestBody: request.data.toString(),
    statusCode: err.response?.statusCode,
    responseHeaders:
        err.response?.headers.map.map((k, v) => MapEntry(k, v.join(','))),
    responseBody: err.response?.data.toString(),
    isSuccess: false,
  );

  await _storageService.addNetworkLog(log);
  handler.next(err);
}