Flutter网络请求检查插件stetho_network_inspector的使用

Flutter网络请求检查插件stetho_network_inspector的使用

stetho_network_inspector

注意:这是flutter_stetho的一个克隆版本,并已修改以支持Flutter 3.0。

这是一个将Flutter连接到Android设备上Chrome开发者工具的插件,通过Stetho Android Library实现。

网络检查器 (Network Inspector)

我主要想实现的功能是网络检查器。

Network Inspector in Action

开始使用 (Getting Started)

如何在自己的应用程序中启动并运行这个插件?请遵循以下步骤。

安装插件 (Install the plugin)

pubspec.yaml文件中添加stetho_network_inspector依赖项:

dependencies:
  flutter:
    sdk: flutter
  stetho_network_inspector: ^x.x.x # 替换为最新版本号
安装StethoHttpOverrides (Install StethoHttpOverrides)

接下来,你需要在应用程序的main()函数中初始化Stetho.initialize()。这将启用Stetho,并允许stetho_network_inspector包裹所有的HTTP调用,并通过Facebook的Stetho包向Chrome开发者工具报告信息。

注意:最好只在一个main_dev.dart文件中放置这个覆盖。

void main() {
  // 初始化Stetho
  Stetho.initialize();

  runApp(new MyApp());
}
在安卓设备上运行你的应用 (Run your app on an Android Device)

执行以下命令运行应用:

flutter run
打开Chrome浏览器 (Open Chrome)

打开Chrome或Chromium浏览器,导航到chrome://inspect

你应该会在窗口中看到你的应用程序出现。

已知问题 (Known Issues)

  • 某些请求的时间可能稍微有点不对。这是因为:
  • 代码是一个粗糙的MVP/原型代码,需要改进。
  • 动画GIF不工作。
  • 某些错误情况可能没有正确处理。需要更多的测试/反馈来发现问题。
  • 没有测试。
  • 如果应用程序在启动时关闭,请运行flutter clean以删除旧的构建。

完整示例Demo

以下是完整的示例代码,演示了如何使用stetho_network_inspector插件:

import 'package:flutter/material.dart';
import 'package:stetho_network_inspector/stetho_network_inspector.dart';
import 'package:http/http.dart' as http;

// 主函数,初始化Stetho并运行应用
void main() {
  Stetho.initialize(); // 初始化Stetho

  runApp(new StethoNetworkInspectorExample(
    client: new http.Client(), // 创建HTTP客户端
  ));
}

// 示例应用类
class StethoNetworkInspectorExample extends StatelessWidget {
  late final http.Client client;

  StethoNetworkInspectorExample({Key? key, required this.client})
      : super(key: key);

  // 获取图片数据
  fetchImage() {
    client.get(
      Uri.parse('https://flutter.dev/assets/404/dash_nest-c64796b59b65042a2b40fae5764c13b7477a592db79eaf04c86298dcb75b78ea.png'),
      headers: {'Authorization': 'token'}, // 添加授权头
    );
  }

  // 获取JSON数据
  fetchJson() {
    client.get(
      Uri.parse('https://jsonplaceholder.typicode.com/posts/1'),
      headers: {'Authorization': 'token'}, // 添加授权头
    );
  }

  // 获取错误数据
  fetchError() {
    client.get(Uri.parse('https://jsonplaceholder.typicode.com/postadsass/1'));
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text('插件示例应用'), // 应用标题
        ),
        body: new Center(
          child: new Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              new Padding(
                padding: new EdgeInsets.all(16.0),
                child: new ElevatedButton(
                  onPressed: fetchJson, // 按钮点击事件,获取JSON数据
                  child: new Text("获取JSON"),
                ),
              ),
              new Padding(
                padding: new EdgeInsets.all(16.0),
                child: new ElevatedButton(
                  onPressed: fetchImage, // 按钮点击事件,获取图片
                  child: new Text("获取图片"),
                ),
              ),
              new Padding(
                padding: new EdgeInsets.all(16.0),
                child: new ElevatedButton(
                  onPressed: fetchError, // 按钮点击事件,触发错误
                  child: new Text("触发错误"),
                ),
              )
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter网络请求检查插件stetho_network_inspector的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter网络请求检查插件stetho_network_inspector的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用stetho_network_inspector插件来进行网络请求检查的代码示例。stetho_network_inspector插件允许你在Flutter应用中使用Facebook Stetho来检查网络请求。请注意,此插件可能需要一些额外的配置才能正常工作。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加stetho_network_inspector依赖:

dependencies:
  flutter:
    sdk: flutter
  stetho_network_inspector: ^最新版本号 # 请替换为实际最新版本号

然后运行flutter pub get来安装依赖。

2. 配置Stetho

在你的main.dart文件中,你需要配置Stetho来启动网络监听。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:stetho_network_inspector/stetho_network_inspector.dart';
import 'package:dio/dio.dart'; // 假设你使用dio库进行网络请求

void main() {
  // 初始化Stetho网络监听器
  StethoNetworkInspector.initialize();

  // 创建一个Dio实例并注册拦截器
  final dio = Dio();
  dio.interceptors.add(
    InterceptorsWrapper(
      onRequest: (RequestOptions options) async {
        // 这里可以添加请求前的处理逻辑
        StethoNetworkInspector.instance.startRequest(options.path, options.headers, options.data);
        return options;
      },
      onResponse: (Response response) async {
        // 这里可以添加响应后的处理逻辑
        StethoNetworkInspector.instance.endRequest(
          response.requestOptions.path,
          response.statusCode,
          response.headers,
          response.data,
        );
        return response;
      },
      onError: (DioError err) async {
        // 这里可以添加错误处理逻辑
        StethoNetworkInspector.instance.endRequestWithError(
          err.requestOptions.path,
          err.response?.statusCode,
          err.response?.headers,
          err.error,
        );
        return err;
      },
    ),
  );

  runApp(MyApp(dio: dio));
}

class MyApp extends StatelessWidget {
  final Dio dio;

  MyApp({required this.dio});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Network Inspector Demo'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              try {
                final response = await dio.get('https://jsonplaceholder.typicode.com/posts/1');
                print(response.data);
              } catch (e) {
                print(e);
              }
            },
            child: Text('Fetch Data'),
          ),
        ),
      ),
    );
  }
}

3. 运行应用并检查网络请求

  • 确保你的设备或模拟器已经连接,并且开发者选项中的USB调试已经开启。
  • 运行你的Flutter应用:flutter run
  • 打开Chrome浏览器,访问chrome://inspect/#devices
  • 你应该能看到你的设备列表,点击你的设备,然后选择一个目标应用(通常是包含你应用包名的那一个)。
  • 现在,当你在应用中执行网络请求时,你应该能够在Chrome的开发者工具中看到这些请求的详细信息。

注意事项

  • stetho_network_inspector插件依赖于Facebook Stetho,这意味着它可能需要一些特定的配置才能与你的开发环境兼容。
  • 确保你的Flutter环境和依赖都是最新的,以避免兼容性问题。
  • 如果你使用的是其他HTTP客户端库(如http包),你需要相应地调整拦截器的注册方式。

希望这个示例能帮助你成功地在Flutter应用中使用stetho_network_inspector进行网络请求检查!

回到顶部