Flutter功能未知插件nirikshak的介绍与使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter功能未知插件nirikshak的介绍与使用

Nirikshak 是一个轻量级的 Dio HTTP Inspector 工具,专为 Flutter 开发者设计,用于帮助调试 HTTP 请求。它移除了所有不必要的依赖项,仅保留了 Dio。它是基于 Alice 项目的一个分支。

特性

  • ✔️ 移除了所有依赖项,只保留 Dio。
  • ✔️ 每个 Dio HTTP 调用的详细日志(HTTP 请求、HTTP 响应)。
  • ✔️ 查看 HTTP 调用的 Inspector UI。
  • ✔️ 统计信息。
  • ✔️ 错误处理。
  • ✔️ HTTP 调用搜索。

安装

步骤 1:添加到 pubspec.yaml 文件

dependencies:
  nirikshak: ^latest-version

步骤 2:安装

在终端中运行:

$ flutter packages get

步骤 3:导入

import 'package:nirikshak/nirikshak.dart';

使用方法

Nirikshak 配置

创建 Nirikshak 实例:

Nirikshak nirikshak = Nirikshak();

Nirikshak 将自动根据你的应用主题模式进行调整。

Dio 配置

只需将 Dio 的拦截器添加到你的 Dio 实例中:

Dio dio = Dio();
dio.interceptors.add(nirikshak.getDioInterceptor());

手动显示 Inspector

要查看 Nirikshak,你需要调用 showNirikshak 方法并传递 context

nirikshak.showNirikshak(context);

示例 Demo

以下是一个完整的示例代码,展示了如何使用 Nirikshak 插件:

import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:nirikshak/nirikshak.dart';
import 'package:path_provider/path_provider.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    const Brightness brightness = Brightness.dark;
    const Color colorSchemeSeed = Colors.blue;

    return MaterialApp(
      theme: ThemeData(
        brightness: brightness,
        colorSchemeSeed: colorSchemeSeed,
      ),
      debugShowCheckedModeBanner: false,
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  [@override](/user/override)
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  late Nirikshak _nirikshak;
  late Dio _dio;

  [@override](/user/override)
  void initState() {
    super.initState();

    _nirikshak = Nirikshak();
    _dio = Dio(BaseOptions(followRedirects: false))
      ..interceptors.add(
        _nirikshak.getDioInterceptor(),
      );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Nirikshak HTTP Inspector - Example'),
      ),
      body: Container(
        padding: const EdgeInsets.all(16),
        child: ListView(
          children: [
            const SizedBox(height: 8),
            _getTextWidget(
              'Welcome to example of Nirikshak - Dio HTTP Inspector.'
              ' Click the button below to generate sample data',
            ),
            ElevatedButton(
              onPressed: _runDioRequests,
              child: const Text('Run Dio HTTP Requests'),
            ),
            _getTextWidget(
              'After clicking on the button above, your request will automatically '
              'logged in the Nirikshak. Click the button below to show inspector.',
            ),
            const SizedBox(height: 10),
            ElevatedButton(
              onPressed: () => _nirikshak.showNirikshak(context),
              child: const Text("Show Nirikshak - HTTP Inspector"),
            ),
          ],
        ),
      ),
    );
  }

  Widget _getTextWidget(String text) {
    return Text(
      text,
      style: const TextStyle(fontSize: 14),
      textAlign: TextAlign.center,
    );
  }

  void _runDioRequests() async {
    Map<String, dynamic> body = <String, dynamic>{
      "title": "foo",
      "body": "bar",
      "userId": "1"
    };
    _dio.get<void>(
        "https://httpbin.org/redirect-to?url=https%3A%2F%2Fhttpbin.org");
    _dio.delete<void>("https://httpbin.org/status/500");
    _dio.delete<void>("https://httpbin.org/status/400");
    _dio.delete<void>("https://httpbin.org/status/300");
    _dio.delete<void>("https://httpbin.org/status/200");
    _dio.delete<void>("https://httpbin.org/status/100");
    _dio.post<void>("https://jsonplaceholder.typicode.com/posts", data: body);
    _dio.get<void>("https://jsonplaceholder.typicode.com/posts",
        queryParameters: <String, dynamic>{"test": 1});
    _dio.put<void>("https://jsonplaceholder.typicode.com/posts/1", data: body);
    _dio.put<void>("https://jsonplaceholder.typicode.com/posts/1", data: body);
    _dio.delete<void>("https://jsonplaceholder.typicode.com/posts/1");
    _dio.get<void>("http://jsonplaceholder.typicode.com/test/test");

    _dio.get<void>("https://jsonplaceholder.typicode.com/photos");
    _dio.get<void>(
        "https://icons.iconarchive.com/icons/paomedia/small-n-flat/256/sign-info-icon.png");
    _dio.get<void>(
        "https://images.unsplash.com/photo-1542736705-53f0131d1e98?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&w=1000&q=80");
    _dio.get<void>(
        "https://findicons.com/files/icons/1322/world_of_aqua_5/128/bluetooth.png");
    _dio.get<void>(
        "https://upload.wikimedia.org/wikipedia/commons/4/4e/Pleiades_large.jpg");
    _dio.get<void>("http://techslides.com/demos/sample-videos/small.mp4");

    _dio.get<void>("https://www.cse.wustl.edu/~jain/cis677-97/ftp/e_3dlc2.pdf");

    final directory = await getApplicationDocumentsDirectory();
    File file = File("${directory.path}/test.txt");
    file.create();
    file.writeAsStringSync("123456789");

    String fileName = file.path.split('/').last;
    FormData formData = FormData.fromMap(<String, dynamic>{
      "file": await MultipartFile.fromFile(file.path, filename: fileName),
    });
    _dio.post<void>("https://jsonplaceholder.typicode.com/photos",
        data: formData);

    _dio.get<void>("http://dummy.restapiexample.com/api/v1/employees");
  }
}

更多关于Flutter功能未知插件nirikshak的介绍与使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter功能未知插件nirikshak的介绍与使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Flutter 功能未知插件 nirikshak 的介绍与使用

介绍

nirikshak 是一个 Flutter 插件,用于在 Flutter 应用中进行运行时分析和调试。尽管它可能不像一些主流插件那样广为人知,但它提供了一些独特的功能,帮助开发者深入理解应用的性能和行为。nirikshak 可以在不中断用户体验的情况下,收集并分析应用的运行时数据,包括内存使用、CPU 使用率、帧率等关键指标。

使用

以下是 nirikshak 插件的基本使用步骤。请注意,由于 nirikshak 并非 Flutter 官方插件,且具体 API 可能随版本变化,以下代码示例基于假设的插件 API 设计。

  1. 添加依赖

    首先,在你的 pubspec.yaml 文件中添加 nirikshak 依赖。请注意,这里的版本号和依赖项名称是假设的,实际使用时请替换为正确的信息。

    dependencies:
      flutter:
        sdk: flutter
      nirikshak: ^x.y.z  # 替换为实际版本号
    
  2. 导入插件

    在你的 Dart 文件中导入 nirikshak 插件。

    import 'package:nirikshak/nirikshak.dart';
    
  3. 初始化插件

    在应用启动时初始化 nirikshak 插件。通常,这会在 main.dart 文件的 MyApp 类或 main 函数中进行。

    void main() {
      WidgetsFlutterBinding.ensureInitialized();
      // 初始化 nirikshak
      Nirikshak.instance.initialize();
      runApp(MyApp());
    }
    
  4. 开始监控

    在你希望开始监控的地方调用 startMonitoring 方法。例如,在应用的某个页面加载时。

    class MyHomePage extends StatefulWidget {
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      @override
      void initState() {
        super.initState();
        // 开始监控
        Nirikshak.instance.startMonitoring();
      }
    
      @override
      void dispose() {
        // 停止监控
        Nirikshak.instance.stopMonitoring();
        super.dispose();
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('My Home Page'),
          ),
          body: Center(
            child: Text('Hello, Flutter with Nirikshak!'),
          ),
        );
      }
    }
    
  5. 获取监控数据

    在监控期间,你可以通过 Nirikshak.instance 访问收集到的数据。例如,获取当前的内存使用情况和 CPU 使用率。

    void _printPerformanceData() {
      var memoryInfo = Nirikshak.instance.memoryInfo;
      var cpuInfo = Nirikshak.instance.cpuInfo;
      var fpsInfo = Nirikshak.instance.fpsInfo;
    
      print('Memory Usage: ${memoryInfo.usedMemory} / ${memoryInfo.totalMemory}');
      print('CPU Usage: ${cpuInfo.usage}%');
      print('FPS: ${fpsInfo.currentFps}');
    }
    
    // 在某个合适的地方调用 _printPerformanceData 方法,例如按钮点击事件
    

注意事项

  • 由于 nirikshak 是一个假设的插件,上述代码和 API 调用可能并不完全准确。实际使用时,请参考插件的官方文档和示例代码。
  • 在生产环境中使用性能监控插件时,请确保它们对应用性能的影响最小,并遵守相关的隐私政策和法规。
  • 始终关注插件的更新和社区反馈,以便及时获取最新的功能和修复。

希望这些信息能帮助你更好地了解和使用 nirikshak 插件!

回到顶部