6.2 KiB
6.2 KiB
🔄 迁移指南:从原项目到 YX Net Inspector
本文档详细说明如何从原项目的网络调试功能迁移到新的 yx_net_inspector 库。
📋 迁移步骤
1. 安装依赖
# pubspec.yaml
dependencies:
flutter:
sdk: flutter
yx_net_inspector: ^1.0.0
dio: ^5.0.0 # 如果使用Dio
2. 替换应用包装器
原代码:
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(),
)
新代码:
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拦截器
原代码:
import 'package:learning_officer_oa/utils/request/interceptors/yx_network_log_interceptor.dart';
dio.interceptors.add(YxNetworkLogInterceptor());
新代码:
import 'package:yx_net_inspector/yx_net_inspector.dart';
dio.interceptors.add(YxNetInspectorDioInterceptor());
4. 手动日志记录(如果需要)
原代码:
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,
);
新代码:
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,
);
🎯 完整迁移示例
原项目代码结构
// 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());
}
}
迁移后代码结构
// 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 全局替换
- 打开 VS Code
- 按
Ctrl+Shift+H打开全局替换 - 启用正则表达式模式
- 使用以下替换规则:
替换导入:
查找: 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) |
完全相同 |
🎨 新功能使用
迁移后你可以使用新库的额外功能:
主题定制
YxNetInspector.simple(
theme: YxNetInspectorTheme(
primaryColor: Colors.purple,
backgroundColor: Colors.white,
textColor: Colors.black,
errorColor: Colors.red,
successColor: Colors.green,
),
child: MyApp(),
)
高级配置
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
🚀 验证迁移
迁移完成后,请验证以下功能:
- ✅ 悬浮球正常显示
- ✅ 点击悬浮球打开检查器面板
- ✅ 网络请求自动记录
- ✅ 请求详情正常显示
- ✅ 搜索和过滤功能正常
- ✅ 清空日志功能正常
📞 技术支持
如果在迁移过程中遇到问题:
- 检查本文档的常见问题
- 查看项目的 GitHub Issues
- 提交新的 Issue 描述你的问题
迁移愉快!🎉