Flutter性能监控插件ume_kit_monitor的使用

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

Flutter性能监控插件ume_kit_monitor的使用

UME Kit Monitor 是一个用于 Flutter 的调试工具包,提供了网络请求日志记录、控制台输出、页面跟踪等调试功能。它集成了 flutter_ume_plus 以提供一个易于使用的调试界面。

I. 安装与设置

1. 添加依赖到 pubspec.yaml

在你的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  ume_kit_monitor: ^2.0.5

dev_dependencies:
  flutter_ume_plus: ^4.0.0
  flutter_ume_kit_ui_plus: ^4.0.0 
  flutter_ume_kit_device_plus: ^4.0.0
  flutter_ume_kit_perf_plus: ^4.0.0
  flutter_ume_kit_show_code_plus: ^4.0.0
  flutter_ume_kit_console_plus: ^4.0.0

2. 注册插件在 main.dart

main.dart 文件中注册插件:

import 'package:flutter/material.dart';
import 'package:flutter_ume_plus/flutter_ume_plus.dart';
import 'package:ume_kit_monitor/ume_kit_monitor.dart';

void main() {
  PluginManager.instance
    ..register(const MonitorPlugin())
    ..register(const MonitorActionsPlugin());

  runApp(const UMEWidget(
    enable: true,
    child: MyApp(),
  ));
}

3. 初始化监控器

在你的应用中初始化监控器:

import 'package:flutter/material.dart';
import 'package:ume_kit_monitor/ume_kit_monitor.dart';

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  void initState() {
    super.initState();

    // 初始化监控器
    Monitor.init(
      context,
      actions: [
        MonitorActionWidget(
          title: "Debug",
          onTap: () { /* ... */ }
        ),
      ],
    );

    // 输出一些数据
    Monitor.instance.putsConsole(["App started"]);
    Monitor.instance.put('CustomTag', 'Debug info');
    Monitor.instance.putPage('HomePage');
  }
}

II. 核心功能

1. 控制台日志

将日志输出到控制台面板:

Monitor.instance.putsConsole(["Log message"]);

2. 网络请求日志

自动记录网络请求,方便调试:

Monitor.instance.putCurl("curl command");

3. JSON响应查看器

记录并查看JSON响应:

Monitor.instance.put('Response', 'api_name\n$jsonString');

4. 页面跟踪

自动跟踪当前页面或路由:

Monitor.instance.putPage("CurrentPage");

5. 自定义标签监控

创建自定义监控面板:

Monitor.instance.put('CustomTag', 'Custom debug info');

6. GetX生命周期监控

自动跟踪GetX小部件的生命周期(如果启用):

// 自动跟踪GetX小部件的生命周期

III. API 参考

1. Monitor 类

初始化

Monitor.init(context, actions: [...]);

核心日志方法

Monitor.instance.put(String tag, String content);
Monitor.instance.puts(String tag, List<String> contents); 
Monitor.instance.putsConsole(List<String> contents);
Monitor.instance.putPage(String page);
Monitor.instance.putCurl(String curl);

// 清除日志
Monitor.instance.clear(String tag);

2. MonitorActionWidget

MonitorActionWidget({
  required String title,
  required VoidCallback onTap,
})

IV. 使用示例

以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_ume_plus/flutter_ume_plus.dart';
import 'package:ume_kit_monitor/ume_kit_monitor.dart';

void main() {
  PluginManager.instance
    ..register(const MonitorPlugin())
    ..register(const MonitorActionsPlugin())
    ..register(const WidgetInfoInspector())
    ..register(const WidgetDetailInspector())
    ..register(const ColorSucker())
    ..register(AlignRuler())
    ..register(const ColorPicker())
    ..register(const TouchIndicator())
    ..register(Performance())
    ..register(const ShowCode())
    ..register(const MemoryInfoPage())
    ..register(CpuInfoPage())
    ..register(const DeviceInfoPanel())
    ..register(Console());

  runApp(const UMEWidget(enable: true, child: MyApp()));
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  [@override](/user/override)
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
      Monitor.init(
        context,
        actions: [
          MonitorActionWidget(title: "DebugPage", onTap: () {}),
          MonitorActionWidget(title: "Dialog Page", onTap: () {}),
          MonitorActionWidget(title: "Test Page", onTap: () {}),
        ],
        forceInit: true,
      );
      Monitor.instance.putsConsole(["当前Ids:....."]);
      Monitor.instance.put('AesDecode', 'testApi\n$jsonString');
      Monitor.instance.put('Response', 'testApi\n$jsonString');
      Monitor.instance.put('json', 'testApi\n$jsonString');
      Monitor.instance.put('test', 'here is a demo');
    });
  }

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

更多关于Flutter性能监控插件ume_kit_monitor的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter性能监控插件ume_kit_monitor的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用ume_kit_monitor插件进行性能监控的示例代码。ume_kit_monitor是一个用于Flutter应用的性能监控工具,它可以帮助开发者实时监控应用的性能数据,如FPS、CPU使用率、内存使用情况等。

首先,确保你已经在pubspec.yaml文件中添加了ume_kit_monitor依赖:

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

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

接下来,在你的Flutter项目中配置和使用ume_kit_monitor。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:ume_kit_monitor/ume_kit_monitor.dart';

void main() {
  // 初始化UME性能监控
  UMEKitMonitor.init(
    enableFPS: true,
    enableCPU: true,
    enableMemory: true,
    enableLog: true, // 是否启用日志监控,根据需求开启或关闭
    // 其他配置参数...
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'UME Kit Monitor Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('UME Kit Monitor Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              '当前FPS: ${UMEKitMonitor.instance.fps?.toString() ?? "未知"}',
              style: TextStyle(fontSize: 20),
            ),
            SizedBox(height: 20),
            Text(
              '当前CPU使用率: ${UMEKitMonitor.instance.cpuUsage?.toString() ?? "未知"}%',
              style: TextStyle(fontSize: 20),
            ),
            SizedBox(height: 20),
            Text(
              '当前内存使用: ${UMEKitMonitor.instance.memoryUsage?.toString() ?? "未知"} MB',
              style: TextStyle(fontSize: 20),
            ),
            // 你可以根据需要添加更多的性能监控数据展示
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // 触发一些操作以观察性能变化
          // 例如,加载大量数据、执行复杂计算等
        },
        tooltip: '触发操作',
        child: Icon(Icons.play_arrow),
      ),
    );
  }

  @override
  void dispose() {
    // 在应用关闭时清理资源
    UMEKitMonitor.dispose();
    super.dispose();
  }
}

在这个示例中,我们做了以下几件事情:

  1. main函数中初始化了UMEKitMonitor,并启用了FPS、CPU使用率、内存使用情况和日志监控。
  2. MyHomePage中,我们通过UMEKitMonitor.instance访问了当前的FPS、CPU使用率和内存使用情况,并在界面上展示出来。
  3. dispose方法中,我们调用了UMEKitMonitor.dispose()来清理资源。

请注意,ume_kit_monitor插件的具体API和使用方式可能会随着版本的更新而有所变化,因此建议查阅最新的官方文档或GitHub仓库以获取最准确的信息。此外,根据实际需求,你可能需要对监控数据进行进一步的处理或展示。

回到顶部