Flutter Plus Plugins 在鸿蒙系统上的使用指南
是一个功能丰富的Flutter插件集合,基于原有的Flutter plugins开发,提供了更多功能、更好的平台支持和维护。该插件集合为HarmonyOS平台提供了完整的适配,允许开发者轻松访问设备功能和系统服务。:获取设备电池状态信息:检测网络连接状态:获取设备详细信息:获取网络信息:获取应用包信息:访问设备传感器share_plus:分享内容到其他应用:Android平台闹钟管理(仅Andro
1. 插件集合介绍
flutter_plus_plugins 是一个功能丰富的Flutter插件集合,基于原有的Flutter plugins开发,提供了更多功能、更好的平台支持和维护。该插件集合为HarmonyOS平台提供了完整的适配,允许开发者轻松访问设备功能和系统服务。
主要包含以下插件:
- battery_plus:获取设备电池状态信息
- connectivity_plus:检测网络连接状态
- device_info_plus:获取设备详细信息
- network_info_plus:获取网络信息
- package_info_plus:获取应用包信息
- sensors_plus:访问设备传感器
- share_plus:分享内容到其他应用
- android_alarm_manager_plus:Android平台闹钟管理(仅Android)
- android_intent_plus:Android平台意图管理(仅Android)
在HarmonyOS平台上,目前已适配的插件包括:battery_plus、connectivity_plus、device_info_plus等,后续将支持更多插件。
2. 安装与配置
2.1 添加依赖
由于这是针对HarmonyOS的自定义修改版本,需要通过git方式引入依赖。以下是各主要插件的依赖配置方法:
2.1.1 引入单个插件
在项目的pubspec.yaml文件中添加所需插件的依赖:
dependencies:
battery_plus:
git:
url: https://gitcode.com/openharmony-sig/flutter_plus_plugins.git
path: packages/battery_plus/battery_plus
2.1.2 connectivity_plus 插件
dependencies:
connectivity_plus:
git:
url: https://gitcode.com/openharmony-sig/flutter_plus_plugins.git
path: packages/connectivity_plus/connectivity_plus
2.1.3 device_info_plus 插件
dependencies:
device_info_plus:
git:
url: https://gitcode.com/openharmony-sig/flutter_plus_plugins.git
path: packages/device_info_plus/device_info_plus
2.2 多个插件同时引入
如果需要同时使用多个插件,可以在 pubspec.yaml 文件中一次性添加所有依赖:
dependencies:
battery_plus:
git:
url: https://gitcode.com/openharmony-sig/flutter_plus_plugins.git
path: packages/battery_plus/battery_plus
connectivity_plus:
git:
url: https://gitcode.com/openharmony-sig/flutter_plus_plugins.git
path: packages/connectivity_plus/connectivity_plus
device_info_plus:
git:
url: https://gitcode.com/openharmony-sig/flutter_plus_plugins.git
path: packages/device_info_plus/device_info_plus
2.3 执行依赖获取
添加依赖后,执行以下命令获取依赖包:
flutter pub get
三、主要插件使用指南
3.1 battery_plus - 电池信息插件
3.1.1 功能介绍
battery_plus 插件提供了获取设备电池信息和监听电池状态变化的能力,包括电池电量、充电状态、节能模式等。
3.1.2 核心 API
| API 名称 | 描述 | 返回类型 | 鸿蒙支持 |
|---|---|---|---|
| batteryLevel | 获取电池电量百分比 | Future | yes |
| isInBatterySaveMode | 判断是否处于节能模式 | Future | yes |
| batteryState | 获取当前电池状态 | Future | yes |
| onBatteryStateChanged | 监听电池状态变化 | Stream | yes |
3.1.3 BatteryState 枚举
| 枚举值 | 描述 |
|---|---|
| full | 电池已充满 |
| charging | 电池正在充电 |
| discharging | 电池正在放电 |
| unknown | 电池状态未知 |
3.1.4 使用示例
import 'package:battery_plus/battery_plus.dart';
// 创建 Battery 实例
final battery = Battery();
// 获取电池电量
int batteryLevel = await battery.batteryLevel;
print('当前电池电量: $batteryLevel%');
// 检查是否处于节能模式
bool isInBatterySaveMode = await battery.isInBatterySaveMode;
print('是否处于节能模式: $isInBatterySaveMode');
// 获取当前电池状态
BatteryState batteryState = await battery.batteryState;
print('当前电池状态: $batteryState');
// 监听电池状态变化
StreamSubscription<BatteryState> subscription =
battery.onBatteryStateChanged.listen((BatteryState state) {
print('电池状态变化: $state');
});
// 记得在不需要监听时取消订阅
// subscription.cancel();
3.2 connectivity_plus - 网络连接插件
3.2.1 功能介绍
connectivity_plus 插件提供了检测设备网络连接状态和监听网络变化的能力,支持 WiFi、移动网络、以太网等多种连接类型。
3.2.2 权限配置
在使用 connectivity_plus 插件时,需要在 OpenHarmony 应用的 module.json5 文件中添加网络权限:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
}
}
3.2.3 核心 API
| API 名称 | 描述 | 返回类型 | 鸿蒙支持 |
|---|---|---|---|
| checkConnectivity | 检查当前网络连接状态 | Future | yes |
| onConnectivityChanged | 监听网络连接状态变化 | Stream | yes |
3.2.4 ConnectivityResult 枚举
| 枚举值 | 描述 |
|---|---|
| bluetooth | 通过蓝牙连接 |
| wifi | 通过 WiFi 连接 |
| ethernet | 通过以太网连接 |
| mobile | 通过移动网络连接 |
| none | 无网络连接 |
| vpn | 通过 VPN 连接 |
| other | 其他连接类型 |
3.2.5 使用示例
import 'package:connectivity_plus/connectivity_plus.dart';
// 创建 Connectivity 实例
final connectivity = Connectivity();
// 检查当前网络连接状态
ConnectivityResult result = await connectivity.checkConnectivity();
print('当前网络状态: $result');
// 监听网络连接状态变化
StreamSubscription<ConnectivityResult> subscription =
connectivity.onConnectivityChanged.listen((ConnectivityResult result) {
print('网络状态变化: $result');
});
// 记得在不需要监听时取消订阅
// subscription.cancel();
3.3 device_info_plus - 设备信息插件
3.3.1 功能介绍
device_info_plus 插件提供了获取设备详细信息的能力,包括设备型号、系统版本、硬件信息等。
3.3.2 核心 API
| API 名称 | 描述 | 返回类型 | 鸿蒙支持 |
|---|---|---|---|
| deviceInfo | 获取跨平台设备信息 | Future | yes |
| ohosInfo | 获取 OpenHarmony 设备信息 | Future | yes |
3.3.3 OhosDeviceInfo 主要属性
| 属性名称 | 描述 | 类型 |
|---|---|---|
| deviceType | 设备类型 | String |
| manufacture | 厂商名称 | String |
| brand | 品牌名称 | String |
| productModel | 产品型号 | String |
| softwareModel | 软件版本型号 | String |
| displayVersion | 用户可见版本号 | String |
| osFullName | 完整操作系统名称 | String |
| sdkApiVersion | SDK API 版本号 | int |
| buildVersion | 构建版本号 | int |
3.3.4 使用示例
import 'package:device_info_plus/device_info_plus.dart';
// 创建 DeviceInfoPlugin 实例
final deviceInfoPlugin = DeviceInfoPlugin();
// 获取 OpenHarmony 设备信息
final ohosInfo = await deviceInfoPlugin.ohosInfo;
print('设备类型: ${ohosInfo.deviceType}');
print('厂商名称: ${ohosInfo.manufacture}');
print('品牌名称: ${ohosInfo.brand}');
print('产品型号: ${ohosInfo.productModel}');
print('软件版本型号: ${ohosInfo.softwareModel}');
print('用户可见版本号: ${ohosInfo.displayVersion}');
print('完整操作系统名称: ${ohosInfo.osFullName}');
print('SDK API 版本号: ${ohosInfo.sdkApiVersion}');
print('构建版本号: ${ohosInfo.buildVersion}');
四、完整示例应用
以下是一个结合三个插件的完整 Flutter 应用示例,展示如何在鸿蒙系统上使用这些插件:
import 'package:flutter/material.dart';
import 'package:battery_plus/battery_plus.dart';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:device_info_plus/device_info_plus.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Plus Plugins Ohos Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
// 插件实例
final Battery _battery = Battery();
final Connectivity _connectivity = Connectivity();
final DeviceInfoPlugin _deviceInfoPlugin = DeviceInfoPlugin();
// 状态变量
int _batteryLevel = 0;
BatteryState _batteryState = BatteryState.unknown;
ConnectivityResult _connectivityResult = ConnectivityResult.none;
String _deviceInfo = '';
// 订阅对象
StreamSubscription<BatteryState>? _batteryStateSubscription;
StreamSubscription<ConnectivityResult>? _connectivitySubscription;
void initState() {
super.initState();
_initPlatformState();
_startListening();
}
void dispose() {
_batteryStateSubscription?.cancel();
_connectivitySubscription?.cancel();
super.dispose();
}
// 初始化平台状态
Future<void> _initPlatformState() async {
// 获取电池信息
int batteryLevel = await _battery.batteryLevel;
BatteryState batteryState = await _battery.batteryState;
// 获取网络状态
ConnectivityResult connectivityResult = await _connectivity.checkConnectivity();
// 获取设备信息
String deviceInfo = await _getDeviceInfo();
setState(() {
_batteryLevel = batteryLevel;
_batteryState = batteryState;
_connectivityResult = connectivityResult;
_deviceInfo = deviceInfo;
});
}
// 开始监听
void _startListening() {
// 监听电池状态变化
_batteryStateSubscription = _battery.onBatteryStateChanged.listen((state) {
setState(() {
_batteryState = state;
});
});
// 监听网络状态变化
_connectivitySubscription = _connectivity.onConnectivityChanged.listen((result) {
setState(() {
_connectivityResult = result;
});
});
}
// 获取设备信息
Future<String> _getDeviceInfo() async {
try {
final ohosInfo = await _deviceInfoPlugin.ohosInfo;
return '''
设备类型: ${ohosInfo.deviceType}
厂商名称: ${ohosInfo.manufacture}
品牌名称: ${ohosInfo.brand}
产品型号: ${ohosInfo.productModel}
软件版本型号: ${ohosInfo.softwareModel}
用户可见版本号: ${ohosInfo.displayVersion}
SDK API 版本号: ${ohosInfo.sdkApiVersion}
''';
} catch (e) {
return '获取设备信息失败: $e';
}
}
// 刷新电池电量
Future<void> _refreshBatteryLevel() async {
int batteryLevel = await _battery.batteryLevel;
setState(() {
_batteryLevel = batteryLevel;
});
}
// 刷新网络状态
Future<void> _refreshConnectivity() async {
ConnectivityResult connectivityResult = await _connectivity.checkConnectivity();
setState(() {
_connectivityResult = connectivityResult;
});
}
Widget build(BuildContext context) {
return DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
title: const Text('Flutter Plus Plugins Ohos Demo'),
bottom: const TabBar(
tabs: [
Tab(text: '电池信息'),
Tab(text: '网络状态'),
Tab(text: '设备信息'),
],
),
),
body: TabBarView(
children: [
// 电池信息页面
Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('当前电池电量: $_batteryLevel%'),
Text('当前电池状态: $_batteryState'),
const SizedBox(height: 20),
ElevatedButton(
onPressed: _refreshBatteryLevel,
child: const Text('刷新电池电量'),
),
],
),
),
// 网络状态页面
Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('当前网络状态: $_connectivityResult'),
const SizedBox(height: 20),
ElevatedButton(
onPressed: _refreshConnectivity,
child: const Text('刷新网络状态'),
),
],
),
),
// 设备信息页面
SingleChildScrollView(
padding: const EdgeInsets.all(20),
child: Text(_deviceInfo),
),
],
),
),
);
}
}
五、总结
5.1 优势
- 跨平台一致性: 保持与其他平台相同的 API 设计,减少学习成本
- 系统级 API 访问: 提供了丰富的系统级 API 访问能力
- 统一的设计规范: 所有插件遵循统一的设计规范,使用体验一致
- 活跃的社区维护: 基于 Flutter 社区维护的 plus_plugins,有活跃的社区支持
5.2 使用建议
- 权限配置: 使用 connectivity_plus 插件时,记得在
module.json5文件中添加网络权限 - 资源管理: 对于流监听操作,记得在不需要时及时取消订阅,避免内存泄漏
- 版本兼容性: 确保使用的 Flutter 和 OpenHarmony SDK 版本与插件兼容(详见各插件的兼容性说明)
- 错误处理: 在调用异步 API 时,建议添加适当的错误处理逻辑
- 测试覆盖: 在不同的网络环境和电池状态下测试应用,确保功能正常
5.3 注意事项
- 本适配方案仅供应用厂商中已支持 Flutter 框架的设备在移植 OpenHarmony 系统过程中作为备选方案使用
- 由于是自定义修改版本,使用时请关注更新日志,及时获取最新修复和功能
- 在使用过程中遇到问题,可通过 GitHub Issues 反馈
六、参考资料
七、开源协议
本适配方案基于 BSD-3-Clause License 开源,详见项目 LICENSE 文件。
更多推荐



所有评论(0)