onResponse method
Called when the response is about to be resolved.
Implementation
@override
void onResponse(
Response<dynamic> response,
ResponseInterceptorHandler handler,
) {
if (_shouldDropAnalytics(response.requestOptions)) {
super.onResponse(response, handler);
return;
}
final DateTime? startTime =
response.requestOptions.extra['analytics_start_time'] as DateTime?;
final Duration? duration =
startTime != null ? DateTime.now().difference(startTime) : null;
// 记录请求成功事件
JunnyAnalyticsUtils.instance.trackNetworkRequest(
event: JunnyNetworkRequestEvents.requestSuccess,
data: <String, dynamic>{
JunnyAnalyticsFields.requestUrl: response.requestOptions.uri.toString(),
JunnyAnalyticsFields.requestMethod: response.requestOptions.method,
JunnyAnalyticsFields.responseCode: response.statusCode,
JunnyAnalyticsFields.duration: duration?.inMilliseconds,
'response_size': _getResponseSize(response),
'request_end_time': DateTime.now().toIso8601String(),
JunnyAnalyticsFields.success: true,
},
);
// 记录性能指标
if (duration != null) {
JunnyAnalyticsUtils.instance.trackPerformance(
operationType: 'network_request',
duration: duration,
extraData: <String, dynamic>{
JunnyAnalyticsFields.requestUrl:
response.requestOptions.uri.toString(),
JunnyAnalyticsFields.requestMethod: response.requestOptions.method,
JunnyAnalyticsFields.responseCode: response.statusCode,
},
);
}
super.onResponse(response, handler);
}