Производительность Firebase с Dio: как заполнить responsePayloadSize, requestPayloadSize

Я использую производительность Firebase, в их официальных документах есть этот пример для измерения скорости HTTP-запросов:

class _MetricHttpClient extends BaseClient {
  _MetricHttpClient(this._inner);

  final Client _inner;

  @override
  Future<StreamedResponse> send(BaseRequest request) async {
    final HttpMetric metric = FirebasePerformance.instance
        .newHttpMetric(request.url.toString(), HttpMethod.Get);

    await metric.start();

    StreamedResponse response;
    try {
      response = await _inner.send(request);
      metric
        ..responsePayloadSize = response.contentLength
        ..responseContentType = response.headers['Content-Type']
        ..requestPayloadSize = request.contentLength
        ..httpResponseCode = response.statusCode;
    } finally {
      await metric.stop();
    }

    return response;
  }
}

Моя проблема в том, что я использую dio, и у dio, похоже, нет следующих данных:

metric
        ..responsePayloadSize = response.contentLength
        ..requestPayloadSize = request.contentLength

Как я могу использовать dio для получения этой информации и отправки ее в firebase?


person cs guy    schedule 16.03.2021    source источник