onError method

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

Called when an exception was occurred during the request.

Implementation

@override
void onError(DioException err, ErrorInterceptorHandler handler) {
  final startTime = err.requestOptions.extra['start_time'];
  final log = logger.logs.firstWhere(
        (l) => l.time == startTime,
    orElse: () => LoggedRequest(
      method: err.requestOptions.method,
      path: err.requestOptions.uri.toString(),
      headers: {},
      requestBody: null,
      time: DateTime.now(),
    ),
  );

  log.statusCode = err.response?.statusCode ?? -1;
  log.responseBody = err.response?.data ?? err.message;
  log.duration = DateTime.now().difference(log.time);
  NotificationHelper.show(
      "${log.method} ${log.statusCode} (Error)", log.path, Constants.logs);

  super.onError(err, handler);
}