Flutter网络日志记录插件network_logger的使用
Flutter网络日志记录插件network_logger的使用
Network Logger
Network logger 是一个带有良好设计用户界面来检查网络流量日志的工具。它包括了Dio拦截器,你只需要编写2行代码就可以开始并检查流量。
📷 Screenshots
Log feed | Log details |
---|---|
🚀 Getting Started!
你可以通过以下3个步骤在美观的GUI中查看HTTP流量日志。
1. 安装 network_logger
请参考此指南将 network_logger 安装到你的Flutter项目中。
2. 添加 DioNetworkLogger 拦截器到 dio 客户端
network_logger 包含了一个Dio拦截器,可以拦截来自Dio客户端的流量。其他包的实现即将推出。
var dio = Dio();
dio.interceptors.add(DioNetworkLogger());
3. 将 network logger overlay 按钮附加到 UI
访问 Network Logger UI 的最简单方法是使用 NetworkLoggerOverlay
,它将在所有屏幕上显示浮动操作按钮。你也可以通过不同的动作实现自定义场景以打开UI。
@Override
void initState() {
NetworkLoggerOverlay.attachTo(context);
super.initState();
}
示例demo
下面是一个完整的示例代码,展示了如何在Flutter应用中使用 network_logger
插件:
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:network_logger/network_logger.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Network Logger',
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
final client = Dio();
@override
void initState() {
super.initState();
NetworkLoggerOverlay.attachTo(context);
client.interceptors.add(DioNetworkLogger());
}
void example1() {
client.get('https://flutter.dev/');
}
void example2() {
client.get('https://jsonplaceholder.typicode.com/todos');
}
void example3() {
client.delete('https://google.com/some-resource');
}
void example4() {
client.post(
'https://run.mocky.io/v3/c80877c3-8d4a-477b-9c45-a1441c34a6b6',
data: <String, dynamic>{
'products': 5,
'foo': 'bar',
'hello': [
'world',
'dunya',
]
},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Network Logger'),
),
body: ListView(
children: [
ListTile(
title: Text('Example 1'),
subtitle: Text('Flutter website'),
onTap: example1,
),
ListTile(
title: Text('Example 2'),
subtitle: Text('Json placeholder'),
onTap: example2,
),
ListTile(
title: Text('Example 3'),
subtitle: Text('404 or something else'),
onTap: example3,
),
ListTile(
title: Text('Example 4'),
subtitle: Text('Mock api'),
onTap: example4,
),
],
),
);
}
}
这个例子创建了一个简单的Flutter应用程序,其中包含四个列表项,每个列表项都会触发一个网络请求,并且这些请求的日志信息会被 network_logger
捕获并在界面上展示。
更多关于Flutter网络日志记录插件network_logger的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter网络日志记录插件network_logger的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用network_logger
插件来记录网络请求的示例代码。network_logger
是一个方便的插件,用于在开发过程中记录HTTP请求和响应的详细信息。
步骤1:添加依赖
首先,在你的pubspec.yaml
文件中添加network_logger
依赖:
dependencies:
flutter:
sdk: flutter
# 其他依赖...
network_logger: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
步骤2:配置dio客户端
network_logger
通常与dio
库一起使用,因为dio
是一个流行的HTTP客户端库。以下是如何配置dio
客户端以使用network_logger
:
import 'package:dio/dio.dart';
import 'package:network_logger/network_logger.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Network Logger Example'),
),
body: NetworkLoggerExample(),
),
);
}
}
class NetworkLoggerExample extends StatefulWidget {
@override
_NetworkLoggerExampleState createState() => _NetworkLoggerExampleState();
}
class _NetworkLoggerExampleState extends State<NetworkLoggerExample> {
late Dio _dio;
@override
void initState() {
super.initState();
// 创建dio实例
_dio = Dio();
// 配置拦截器以使用network_logger
_dio.interceptors.add(NetworkLogger(
requestHeader: true,
requestBody: true,
responseBody: true,
responseHeader: true,
logError: true,
logPrint: print, // 可以自定义日志输出函数,这里使用print输出到控制台
));
}
@override
Widget build(BuildContext context) {
return Center(
child: ElevatedButton(
onPressed: () async {
// 发起网络请求
try {
Response response = await _dio.get('https://jsonplaceholder.typicode.com/posts/1');
print('Response data: ${response.data}');
} catch (e) {
print('Request failed: $e');
}
},
child: Text('Fetch Data'),
),
);
}
}
代码解释
- 添加依赖:在
pubspec.yaml
中添加network_logger
依赖。 - 创建dio实例:在
_NetworkLoggerExampleState
的initState
方法中创建一个Dio
实例。 - 配置拦截器:使用
dio
的拦截器功能添加NetworkLogger
,并配置相关选项,如是否记录请求头、请求体、响应体和响应头。 - 发起网络请求:在按钮点击事件中,使用配置好的
dio
实例发起网络请求,并打印响应数据。
运行项目
确保你的开发环境已经配置好Flutter和Dart,然后运行项目:
flutter run
当你点击按钮发起网络请求时,你应该能在控制台中看到详细的网络请求和响应日志。
这个示例展示了如何在Flutter项目中集成和使用network_logger
插件来记录网络日志。希望这对你有帮助!