Flutter开发工具集成插件devtools_app_shared的使用
Flutter开发工具集成插件devtools_app_shared的使用
devtools_app_shared
是一个包含了Dart和Flutter DevTools中可以共享的UI、实用工具和服务组件的包。它可以被DevTools、DevTools扩展和其他需要相同逻辑或样式的工具表面使用。
使用方法
添加依赖
首先,将该包作为依赖添加到你的 pubspec.yaml
文件中:
dependencies:
devtools_app_shared: ^latest_version
然后运行以下命令来获取依赖:
$ flutter pub add devtools_app_shared
导入所需的库
根据需要导入相应的组件库:
import 'package:devtools_app_shared/service.dart';
import 'package:devtools_app_shared/service_extensions.dart' as extensions;
import 'package:devtools_app_shared/ui.dart';
import 'package:devtools_app_shared/utils.dart';
示例代码
1. 设置和访问全局变量
import 'package:devtools_app_shared/utils.dart';
class MyCoolClass {
void foo() {
print('Hello from MyCoolClass');
}
}
MyCoolClass get coolClass => globals[MyCoolClass] as MyCoolClass;
void main() {
// 创建一个全局可访问的变量(`globals[ServiceManager]`);
setGlobal(MyCoolClass, MyCoolClass());
coolClass.foo();
}
2. 使用实用工具如 AutoDisposeMixin
AutoDisposeMixin
支持在 StatefulWidget
生命周期中自动处理监听器。
import 'package:flutter/material.dart';
import 'package:devtools_app_shared/utils.dart';
class MyStatefulWidget extends StatefulWidget {
const MyStatefulWidget({super.key});
@override
State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> with AutoDisposeMixin {
var foo = 'hi';
@override
void initState() {
super.initState();
addAutoDisposeListener(ValueNotifier(0), () {
setState(() {
foo = '$foo hi';
});
});
}
@override
Widget build(BuildContext context) {
return Text(foo);
}
}
3. 访问共享的UI组件和样式
import 'package:flutter/material.dart';
import 'package:devtools_app_shared/ui.dart';
class ExampleWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return RoundedOutlinedBorder(
child: Column(
children: [
AreaPaneHeader(
roundedTopBorder: false,
includeTopBorder: false,
title: Text('This is a section header'),
),
Expanded(
child: Center(
child: Text(
'Foo',
style: Theme.of(context).textTheme.bodyText1, // 使用主题中的样式
),
),
),
],
),
);
}
}
4. VM服务管理,包括访问隔离和扩展
import 'package:devtools_app_shared/service.dart';
import 'package:devtools_app_shared/service_extensions.dart' as extensions;
import 'package:devtools_shared/service.dart';
import 'dart:async';
void main() async {
final serviceManager = ServiceManager();
// 监听连接更新
serviceManager.connectedState.addListener(() {
if (serviceManager.connectedState.value.connected) {
print('Manager connected to VM service');
} else {
print('Manager not connected to VM service');
}
});
final finishedCompleter = Completer<void>();
final vmService = await connect<VmService>(
uri: Uri.parse('ws://localhost:8181/ws'),
finishedCompleter: finishedCompleter,
serviceFactory: VmService.defaultFactory,
);
await serviceManager.vmServiceOpened(
vmService,
onClosed: finishedCompleter.future,
);
// 获取服务扩展状态
final ValueListenable<ServiceExtensionState> performanceOverlayEnabled =
serviceManager.manager.serviceExtensionManager.getServiceExtensionState(
extensions.performanceOverlay.extension,
);
// 设置服务扩展状态
await serviceManager.manager.serviceExtensionManager.setServiceExtensionState(
extensions.performanceOverlay.extension,
enabled: true,
value: true,
);
// 访问隔离
final myIsolate = serviceManager.isolateManager.mainIsolate.value;
// 等等...
}
问题反馈
此包是更大的 flutter/devtools 项目的一部分。请在那里报告任何问题或反馈。
支持的Flutter版本
此包遵循 flutter/packages
的支持Flutter版本策略,即支持最新的 stable
版本以及当前的 master
版本。实际上,这个包通常也支持较旧的版本,除非有特定需求,如使用新的DevTools或Flutter功能,才会更新最低版本要求。
更多关于Flutter开发工具集成插件devtools_app_shared的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter开发工具集成插件devtools_app_shared的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter开发中,devtools_app_shared
插件是用于与 Flutter DevTools 集成的共享代码库。虽然它本身不是一个直接面向开发者的插件(开发者更常使用的是 flutter_devtools
),但了解如何在项目中集成和使用相关的 DevTools 功能对于调试和优化应用非常有帮助。
下面是一个如何在 Flutter 项目中集成并使用 DevTools 的示例,虽然不直接涉及 devtools_app_shared
(因为它是内部使用的库),但会展示如何通过 DevTools 提升开发效率。
1. 安装 Flutter DevTools
首先,确保你已经安装了 Flutter DevTools。你可以通过以下命令全局安装它(如果还未安装):
flutter pub global activate flutter_devtools
2. 启动 Flutter 应用
在你的 Flutter 项目根目录下,启动你的 Flutter 应用:
flutter run
3. 启动 Flutter DevTools
在另一个终端窗口中,启动 Flutter DevTools:
flutter pub global run flutter_devtools
这将打开 DevTools 在你的默认浏览器中。
4. 连接到你的 Flutter 应用
在 DevTools 界面中,你会看到一个“Connect to a Flutter application”的按钮。点击它,然后选择你正在运行的 Flutter 应用。这通常涉及到复制并粘贴从 Flutter 终端输出的一个调试连接 URI。
5. 使用 DevTools 的各种功能
一旦连接成功,你就可以使用 DevTools 提供的各种强大功能了,包括但不限于:
- 性能分析(Performance):查看应用的帧率和 CPU 使用情况,识别性能瓶颈。
- 内存分析(Memory):监控应用的内存使用情况,查找内存泄漏。
- Widget 检查器(Widget Inspector):实时查看和修改应用的 UI 树。
- 网络日志(Network):查看应用的网络请求和响应。
代码示例:性能分析
虽然 DevTools 的使用主要是图形界面操作,但这里提供一个简单的 Flutter 应用示例,并说明如何使用 DevTools 的性能分析功能。
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('Flutter DevTools Example'),
),
body: Center(
child: MyWidget(),
),
),
);
}
}
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: List.generate(100, (index) {
return GestureDetector(
onTap: () {
// Simulate some work
Future.delayed(Duration(seconds: 1), () {});
},
child: Container(
height: 50,
width: double.infinity,
color: Colors.blue.shade100,
child: Center(child: Text('Item $index')),
),
);
}),
);
}
}
在这个简单的应用中,我们生成了一个包含 100 个可点击项目的列表。当你点击这些项目时,它们会模拟执行一些耗时操作(通过 Future.delayed
)。
使用 DevTools 分析性能
- 运行你的 Flutter 应用。
- 启动 Flutter DevTools 并连接到你的应用。
- 在 DevTools 中,选择“Performance”标签。
- 点击红色的录制按钮开始性能录制。
- 在你的应用中快速点击几个项目,模拟用户交互。
- 点击停止按钮结束录制。
你将看到一个详细的性能分析报告,包括每一帧的 CPU 使用情况、渲染时间等信息,帮助你识别和优化性能瓶颈。
通过这种方式,flutter_devtools
和其背后的 devtools_app_shared
等库共同为 Flutter 开发者提供了一个强大的工具集,用于调试、优化和理解他们的应用。