Flutter功能扩展插件flutter_ume_plus的使用
Flutter功能扩展插件flutter_ume_plus的使用
1. 简介
UME 是一个用于Flutter应用程序的内置调试工具平台。它提供了多种插件工具,帮助开发者在应用中进行调试、性能分析、设备信息查看等操作。UME 支持多个平台,包括 iOS、Android、Web、macOS、Windows 和 Linux。
2. 快速开始 (Quick Start)
2.1 添加依赖
编辑 pubspec.yaml
文件,添加 UME 及其相关插件的依赖。根据你使用的 Flutter 版本选择合适的版本号:
-
Flutter 3.x 及以上版本:
dev_dependencies: flutter_ume: ^1.0.1 flutter_ume_kit_ui: ^1.0.0 flutter_ume_kit_device: ^1.0.0 flutter_ume_kit_perf: ^1.0.0 flutter_ume_kit_show_code: ^1.0.0 flutter_ume_kit_console: ^1.0.0 flutter_ume_kit_dio: ^1.0.0
-
Flutter 2.x 及以上版本(Null Safety):
dev_dependencies: flutter_ume: ^0.3.0+1 flutter_ume_kit_ui: ^0.3.0+1 flutter_ume_kit_device: ^0.3.0 flutter_ume_kit_perf: ^0.3.0 flutter_ume_kit_show_code: ^0.3.0 flutter_ume_kit_console: ^0.3.0 flutter_ume_kit_dio: ^0.3.0
-
Flutter 1.x 及以上版本(非 Null Safety):
dev_dependencies: flutter_ume: ^0.1.1 flutter_ume_kit_ui: ^0.1.1 flutter_ume_kit_device: ^0.1.1 flutter_ume_kit_perf: ^0.1.1 flutter_ume_kit_show_code: ^0.1.1 flutter_ume_kit_console: ^0.1.1
2.2 获取依赖
运行以下命令来获取依赖项:
flutter pub get
2.3 导入包
在你的 Dart 文件中导入 UME 及其插件:
import 'package:flutter_ume/flutter_ume.dart'; // UME 框架
import 'package:flutter_ume_kit_ui/flutter_ume_kit_ui.dart'; // UI 工具
import 'package:flutter_ume_kit_perf/flutter_ume_kit_perf.dart'; // 性能工具
import 'package:flutter_ume_kit_show_code/flutter_ume_kit_show_code.dart'; // 显示代码
import 'package:flutter_ume_kit_device/flutter_ume_kit_device.dart'; // 设备信息
import 'package:flutter_ume_kit_console/flutter_ume_kit_console.dart'; // 显示 debugPrint
import 'package:flutter_ume_kit_dio/flutter_ume_kit_dio.dart'; // Dio 调试
2.4 初始化 UME 并注册插件
编辑 main.dart
文件,在 main
方法中初始化 UME 并注册插件。确保只在调试模式下启用 UME:
import 'package:flutter/material.dart';
import 'package:dio/dio.dart'; // 如果你使用了 Dio
void main() {
if (kDebugMode) {
PluginManager.instance
..register(WidgetInfoInspector()) // 注册 Widget 信息插件
..register(WidgetDetailInspector()) // 注册 Widget 详细信息插件
..register(ColorSucker()) // 注册颜色吸取器
..register(AlignRuler()) // 注册对齐标尺
..register(ColorPicker()) // 注册颜色选择器
..register(TouchIndicator()) // 注册触摸指示器
..register(Performance()) // 注册性能监控
..register(ShowCode()) // 注册显示代码
..register(MemoryInfoPage()) // 注册内存信息
..register(CpuInfoPage()) // 注册 CPU 信息
..register(DeviceInfoPanel()) // 注册设备信息
..register(Console()) // 注册控制台
..register(DioInspector(dio: Dio())); // 注册 Dio 调试器
runApp(UMEWidget(child: MyApp(), enable: true)); // 启用 UME
} else {
runApp(MyApp()); // 正常运行应用
}
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
2.5 运行应用
使用以下命令运行应用:
flutter run
或者构建 APK 或 iOS 应用:
flutter build apk --debug
flutter build ios --debug
3. 重要注意事项 (IMPORTANT)
从 0.1.1
和 0.2.1
版本开始,不再需要设置 useRootNavigator: false
。此部分仅适用于 0.1.1
和 0.2.1
之前的版本。
4. 功能 (Features)
UME 提供了 13 个内置插件工具,涵盖了 UI 调试、性能监控、设备信息、代码显示、控制台输出和 Dio 请求调试等功能。以下是部分插件的截图:
UI Kits | Performance Kits | Device Info Kits | Show Code | Console | Dio Inspector |
---|---|---|---|---|---|
5. 开发自定义插件 (Develop plugin kits for UME)
你可以创建自定义插件并集成到 UME 中。以下是开发自定义插件的步骤:
-
创建自定义插件项目: 使用以下命令创建一个新的插件项目:
flutter create -t package custom_plugin
-
编辑
pubspec.yaml
文件: 在自定义插件项目的pubspec.yaml
文件中添加 UME 框架的依赖:dependencies: flutter_ume: '>=0.3.0 <0.4.0'
-
创建插件类: 创建一个实现
Pluggable
接口的类:import 'package:flutter_ume/flutter_ume.dart'; class CustomPlugin implements Pluggable { CustomPlugin({Key key}); [@override](/user/override) Widget buildWidget(BuildContext context) => Container( color: Colors.white, width: 100, height: 100, child: Center( child: Text('Custom Plugin'), ), ); // 插件面板 [@override](/user/override) String get name => 'CustomPlugin'; // 插件名称 [@override](/user/override) String get displayName => 'CustomPlugin'; [@override](/user/override) void onTrigger() {} // 点击插件图标时调用 [@override](/user/override) ImageProvider<Object> get iconImageProvider => NetworkImage('url'); // 插件图标 }
-
在主项目中使用自定义插件:
-
编辑主项目的
pubspec.yaml
文件,添加自定义插件的依赖:dev_dependencies: custom_plugin: path: path/to/custom_plugin
-
运行
flutter pub get
来获取依赖。 -
导入自定义插件包:
import 'package:custom_plugin/custom_plugin.dart';
-
在
main.dart
中注册自定义插件:if (kDebugMode) { PluginManager.instance ..register(CustomPlugin()); runApp( UMEWidget( child: MyApp(), enable: true, ), ); } else { runApp(MyApp()); }
-
-
运行应用: 使用
flutter run
命令运行应用。
6. 在 Release/Profile 模式下使用 UME
虽然可以在 Release/Profile 模式下使用 UME,但请注意以下风险:
- VM Service 在这些环境中不可用,因此某些功能可能无法正常工作。
- 开发者需要自行隔离应用的分发渠道,以避免将调试代码提交到生产环境。
为了在 Release/Profile 模式下使用 UME,需要调整以下内容:
- 在
pubspec.yaml
中,将flutter_ume
和插件依赖项写在dependencies
下,而不是dev_dependencies
。 - 不要将调用
PluginManager.instance.register()
和UMEWidget(child: App())
的代码放在表示调试模式的条件语句中(例如kDebugMode
)。 - 确保上述调整后,运行
flutter clean
和flutter pub get
,然后构建应用。
7. 版本兼容性 (Compatibility)
UME 的不同版本与 Flutter 的兼容性如下表所示:
UME 版本 | 1.12.13 | 1.22.3 | 2.0.1 | 2.2.3 | 2.5.3 | 2.8.0 | 3.0.5 | 3.3.1 |
---|---|---|---|---|---|---|---|---|
0.1.x | ✅ | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | ❌ | ❌ |
0.2.x | ❌ | ❌ | ✅ | ✅ | ✅ | ⚠️ | ❌ | ❌ |
0.3.x | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
1.0.x | ❌ | ❌ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ✅ | ✅ |
1.1.x | ❌ | ❌ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ✅ | ✅ |
⚠️ 表示该版本尚未完全测试兼容性。
8. 其他
-
Null Safety:建议使用以下版本的 UME 和插件以确保 Null Safety:
flutter_ume: ^0.3.0+1
flutter_ume_kit_ui: ^0.3.0+1
flutter_ume_kit_device: ^0.3.0
flutter_ume_kit_perf: ^0.3.0
flutter_ume_kit_show_code: ^0.3.0
flutter_ume_kit_console: ^0.3.0
flutter_ume_kit_dio: ^0.3.0
-
贡献者:感谢所有为 UME 做出贡献的开发者。
-
许可证:UME 项目遵循 MIT 许可证。
9. 完整示例 Demo
以下是一个完整的示例项目,展示了如何使用 flutter_ume
及其插件:
import 'package:flutter/material.dart';
import 'package:flutter_ume/flutter_ume.dart';
import 'package:flutter_ume_kit_ui/flutter_ume_kit_ui.dart';
import 'package:flutter_ume_kit_perf/flutter_ume_kit_perf.dart';
import 'package:flutter_ume_kit_show_code/flutter_ume_kit_show_code.dart';
import 'package:flutter_ume_kit_device/flutter_ume_kit_device.dart';
import 'package:flutter_ume_kit_console/flutter_ume_kit_console.dart';
import 'package:flutter_ume_kit_dio/flutter_ume_kit_dio.dart';
import 'package:dio/dio.dart';
void main() {
if (kDebugMode) {
PluginManager.instance
..register(WidgetInfoInspector())
..register(WidgetDetailInspector())
..register(ColorSucker())
..register(AlignRuler())
..register(ColorPicker())
..register(TouchIndicator())
..register(Performance())
..register(ShowCode())
..register(MemoryInfoPage())
..register(CpuInfoPage())
..register(DeviceInfoPanel())
..register(Console())
..register(DioInspector(dio: Dio()));
runApp(UMEWidget(child: MyApp(), enable: true));
} else {
runApp(MyApp());
}
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
更多关于Flutter功能扩展插件flutter_ume_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html