onResponse method

  1. @override
void onResponse(
  1. Response response,
  2. ResponseInterceptorHandler handler
)

Called when the response is about to be resolved.

Implementation

@override
void onResponse(Response response, ResponseInterceptorHandler handler) {
  final requestId = response.requestOptions.extra['debug_request_id'] as String?;
  final existingRequest = requestId != null
      ? DebugNetworkLogger.requests.firstWhere(
          (r) => r.id == requestId,
          orElse: () => DebugNetworkRequest(
            id: requestId,
            url: response.requestOptions.uri.toString(),
            method: _parseMethod(response.requestOptions.method),
            headers: response.requestOptions.headers,
            body: response.requestOptions.data,
            requestTime: DateTime.now(),
          ),
        )
      : null;

  if (existingRequest != null) {
    final updatedRequest = existingRequest.copyWith(
      statusCode: response.statusCode,
      responseHeaders: response.headers.map.map((k, v) => MapEntry(k, v.join(', '))),
      responseBody: response.data,
      responseTime: DateTime.now(),
      durationMs: existingRequest.requestTime.difference(DateTime.now()).inMilliseconds.abs(),
      isLoading: false,
    );
    DebugNetworkLogger.updateRequest(updatedRequest);
  }

  super.onResponse(response, handler);
}