Merge branch 'release/1.1.1'

This commit is contained in:
YuanXuan 2026-01-20 17:17:35 +08:00
commit bdecf12949
1 changed files with 59 additions and 34 deletions

View File

@ -1,62 +1,87 @@
import 'package:dio/dio.dart';
import 'package:yx_net_inspector/src/yx_net_inspector_app.dart';
import 'package:yx_net_inspector/yx_net_inspector.dart';
/// Dio
/// YX Net Inspector Dio
///
/// Dio YxNetInspector
/// Dio YX Net Inspector
///
/// 使
/// ```dart
/// // App Debug
/// if (kDebugMode) {
/// final dio = YxNetworkServiceManager.instance.mainDio;
/// dio.interceptors.add(YxNetInspectorDioInterceptor());
/// }
/// ```
class YxNetInspectorDioInterceptor extends Interceptor {
final YxNetInspectorController _controller =
YxNetInspectorController.instance;
@override
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
//
YxNetInspectorGlobal.logRequest(
id: options.hashCode.toString(),
// ID
final requestId =
'${DateTime.now().millisecondsSinceEpoch}_${options.hashCode}';
// ID和开始时间
options.extra['yx_request_id'] = requestId;
options.extra['yx_request_start_time'] = DateTime.now();
// YX Net Inspector
_controller.logRequest(
id: requestId,
method: options.method,
url: options.uri.toString(),
headers: options.headers,
headers: options.headers.map((k, v) => MapEntry(k, v.toString())),
requestData: options.data,
queryParameters: options.queryParameters,
queryParameters:
options.queryParameters.isNotEmpty ? options.queryParameters : null,
);
handler.next(options);
super.onRequest(options, handler);
}
@override
void onResponse(
Response<dynamic> response, ResponseInterceptorHandler handler,) {
//
try {
//
// Dio RequestOptions Controller
// RequestOptions (extra)
final requestOptions = response.requestOptions;
void onResponse(Response response, ResponseInterceptorHandler handler) {
final requestId = response.requestOptions.extra['yx_request_id'] as String?;
final startTime =
response.requestOptions.extra['yx_request_start_time'] as DateTime?;
YxNetInspectorGlobal.logResponse(
id: requestOptions.hashCode.toString(),
if (requestId != null) {
final duration =
startTime != null ? DateTime.now().difference(startTime) : null;
// YX Net Inspector
_controller.logResponse(
id: requestId,
statusCode: response.statusCode,
responseData: response.data,
responseHeaders: response.headers.map,
// logRequest
// Controller ID Duration = Now - StartTime
duration: duration,
);
} on Object catch (_) {
//
}
handler.next(response);
super.onResponse(response, handler);
}
@override
void onError(DioException err, ErrorInterceptorHandler handler) {
//
try {
final requestOptions = err.requestOptions;
final requestId = err.requestOptions.extra['yx_request_id'] as String?;
final startTime =
err.requestOptions.extra['yx_request_start_time'] as DateTime?;
YxNetInspectorGlobal.logError(
id: requestOptions.hashCode.toString(),
error: err.message ?? err.toString(),
if (requestId != null) {
final duration =
startTime != null ? DateTime.now().difference(startTime) : null;
// YX Net Inspector
_controller.logError(
id: requestId,
error: err.message ?? '未知网络错误',
statusCode: err.response?.statusCode,
duration: duration,
);
} on Object catch (_) {
//
}
handler.next(err);
super.onError(err, handler);
}
}