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: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 { class YxNetInspectorDioInterceptor extends Interceptor {
final YxNetInspectorController _controller =
YxNetInspectorController.instance;
@override @override
void onRequest(RequestOptions options, RequestInterceptorHandler handler) { void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
// // ID
YxNetInspectorGlobal.logRequest( final requestId =
id: options.hashCode.toString(), '${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, method: options.method,
url: options.uri.toString(), url: options.uri.toString(),
headers: options.headers, headers: options.headers.map((k, v) => MapEntry(k, v.toString())),
requestData: options.data, requestData: options.data,
queryParameters: options.queryParameters, queryParameters:
options.queryParameters.isNotEmpty ? options.queryParameters : null,
); );
handler.next(options);
super.onRequest(options, handler);
} }
@override @override
void onResponse( void onResponse(Response response, ResponseInterceptorHandler handler) {
Response<dynamic> response, ResponseInterceptorHandler handler,) { final requestId = response.requestOptions.extra['yx_request_id'] as String?;
// final startTime =
try { response.requestOptions.extra['yx_request_start_time'] as DateTime?;
//
// Dio RequestOptions Controller
// RequestOptions (extra)
final requestOptions = response.requestOptions;
YxNetInspectorGlobal.logResponse( if (requestId != null) {
id: requestOptions.hashCode.toString(), final duration =
startTime != null ? DateTime.now().difference(startTime) : null;
// YX Net Inspector
_controller.logResponse(
id: requestId,
statusCode: response.statusCode, statusCode: response.statusCode,
responseData: response.data, responseData: response.data,
responseHeaders: response.headers.map, duration: duration,
// logRequest
// Controller ID Duration = Now - StartTime
); );
} on Object catch (_) {
//
} }
handler.next(response);
super.onResponse(response, handler);
} }
@override @override
void onError(DioException err, ErrorInterceptorHandler handler) { void onError(DioException err, ErrorInterceptorHandler handler) {
// final requestId = err.requestOptions.extra['yx_request_id'] as String?;
try { final startTime =
final requestOptions = err.requestOptions; err.requestOptions.extra['yx_request_start_time'] as DateTime?;
YxNetInspectorGlobal.logError( if (requestId != null) {
id: requestOptions.hashCode.toString(), final duration =
error: err.message ?? err.toString(), startTime != null ? DateTime.now().difference(startTime) : null;
// YX Net Inspector
_controller.logError(
id: requestId,
error: err.message ?? '未知网络错误',
statusCode: err.response?.statusCode, statusCode: err.response?.statusCode,
duration: duration,
); );
} on Object catch (_) {
//
} }
handler.next(err);
super.onError(err, handler);
} }
} }