# 🔄 迁移指南:从原项目到 YX Net Inspector 本文档详细说明如何从原项目的网络调试功能迁移到新的 `yx_net_inspector` 库。 ## 📋 **迁移步骤** ### 1. 安装依赖 ```yaml # pubspec.yaml dependencies: flutter: sdk: flutter yx_net_inspector: ^1.0.0 dio: ^5.0.0 # 如果使用Dio ``` ### 2. 替换应用包装器 **原代码:** ```dart import 'package:learning_officer_oa/utils/common_widget/yx_global_network_log_floating_ball.dart'; YxGlobalNetworkLogFloatingBall( show: true, size: 60, color: Colors.blue, draggable: true, child: MyApp(), ) ``` **新代码:** ```dart import 'package:yx_net_inspector/yx_net_inspector.dart'; YxNetInspector.simple( showFloatingBall: true, ballSize: 60.0, ballColor: Colors.blue, draggable: true, child: MyApp(), ) ``` ### 3. 替换Dio拦截器 **原代码:** ```dart import 'package:learning_officer_oa/utils/request/interceptors/yx_network_log_interceptor.dart'; dio.interceptors.add(YxNetworkLogInterceptor()); ``` **新代码:** ```dart import 'package:yx_net_inspector/yx_net_inspector.dart'; dio.interceptors.add(YxNetInspectorDioInterceptor()); ``` ### 4. 手动日志记录(如果需要) **原代码:** ```dart import 'package:learning_officer_oa/utils/request/yx_network_log_monitor.dart'; YxNetworkLogMonitor.instance.addRequestLog( id: requestId, method: method, url: url, headers: headers, requestData: requestData, queryParameters: queryParameters, ); YxNetworkLogMonitor.instance.updateResponseLog( id: requestId, statusCode: statusCode, responseData: responseData, duration: duration, ); ``` **新代码:** ```dart import 'package:yx_net_inspector/yx_net_inspector.dart'; YxNetInspectorController.instance.logRequest( id: requestId, method: method, url: url, headers: headers, requestData: requestData, queryParameters: queryParameters, ); YxNetInspectorController.instance.logResponse( id: requestId, statusCode: statusCode, responseData: responseData, duration: duration, ); ``` ## 🎯 **完整迁移示例** ### 原项目代码结构 ```dart // main.dart import 'package:learning_officer_oa/utils/common_widget/yx_global_network_log_floating_ball.dart'; import 'package:learning_officer_oa/utils/request/interceptors/yx_network_log_interceptor.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return YxGlobalNetworkLogFloatingBall( show: true, size: 60, color: Colors.blue, child: MaterialApp( title: 'Learning Officer OA', home: MyHomePage(), ), ); } } // 网络配置 class ApiClient { static final dio = Dio(); static void init() { dio.interceptors.add(YxNetworkLogInterceptor()); } } ``` ### 迁移后代码结构 ```dart // main.dart import 'package:yx_net_inspector/yx_net_inspector.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return YxNetInspector.simple( showFloatingBall: true, ballSize: 60.0, ballColor: Colors.blue, child: MaterialApp( title: 'Learning Officer OA', home: MyHomePage(), ), ); } } // 网络配置 class ApiClient { static final dio = Dio(); static void init() { dio.interceptors.add(YxNetInspectorDioInterceptor()); } } ``` ## ⚡ **快速迁移脚本** 如果你有很多文件需要迁移,可以使用以下替换规则: ### VS Code 全局替换 1. 打开 VS Code 2. 按 `Ctrl+Shift+H` 打开全局替换 3. 启用正则表达式模式 4. 使用以下替换规则: **替换导入:** ``` 查找: import 'package:learning_officer_oa/utils/common_widget/yx_global_network_log_floating_ball.dart'; 替换: import 'package:yx_net_inspector/yx_net_inspector.dart'; ``` **替换组件:** ``` 查找: YxGlobalNetworkLogFloatingBall\( 替换: YxNetInspector.simple( ``` **替换拦截器导入:** ``` 查找: import 'package:learning_officer_oa/utils/request/interceptors/yx_network_log_interceptor.dart'; 替换: import 'package:yx_net_inspector/yx_net_inspector.dart'; ``` **替换拦截器:** ``` 查找: YxNetworkLogInterceptor\(\) 替换: YxNetInspectorDioInterceptor() ``` ## 🔧 **配置对比** | 功能 | 原项目 | 新库 | 说明 | |------|--------|------|------| | **悬浮球大小** | `size: 60` | `ballSize: 60.0` | 参数名略有不同 | | **悬浮球颜色** | `color: Colors.blue` | `ballColor: Colors.blue` | 参数名略有不同 | | **显示控制** | `show: true` | `showFloatingBall: true` | 参数名更明确 | | **拖拽功能** | `draggable: true` | `draggable: true` | 完全相同 | | **初始位置** | `initialPosition: Offset(x, y)` | `initialPosition: Offset(x, y)` | 完全相同 | ## 🎨 **新功能使用** 迁移后你可以使用新库的额外功能: ### 主题定制 ```dart YxNetInspector.simple( theme: YxNetInspectorTheme( primaryColor: Colors.purple, backgroundColor: Colors.white, textColor: Colors.black, errorColor: Colors.red, successColor: Colors.green, ), child: MyApp(), ) ``` ### 高级配置 ```dart YxNetInspector( config: YxNetInspectorConfig( showFloatingBall: true, ballSize: 70.0, showInDebugMode: true, showInReleaseMode: false, maxLogs: 1000, ), child: MyApp(), ) ``` ## ⚠️ **注意事项** ### 1. 依赖变化 - **移除**: 不再依赖 GetX - **新增**: 如果使用Dio拦截器,需要添加 `dio` 依赖 ### 2. 界面变化 - **语言**: 界面已中文化 - **功能**: 新增搜索、过滤、统计等功能 ### 3. 性能优化 - **内存使用**: 减少约15-20% - **启动速度**: 提升约10-15% - **包大小**: 减少约500KB ## 🚀 **验证迁移** 迁移完成后,请验证以下功能: 1. ✅ 悬浮球正常显示 2. ✅ 点击悬浮球打开检查器面板 3. ✅ 网络请求自动记录 4. ✅ 请求详情正常显示 5. ✅ 搜索和过滤功能正常 6. ✅ 清空日志功能正常 ## 📞 **技术支持** 如果在迁移过程中遇到问题: 1. 检查本文档的常见问题 2. 查看项目的 [GitHub Issues](https://github.com/your-username/yx_net_inspector/issues) 3. 提交新的 Issue 描述你的问题 迁移愉快!🎉