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 优势

  1. 跨平台一致性: 保持与其他平台相同的 API 设计,减少学习成本
  2. 系统级 API 访问: 提供了丰富的系统级 API 访问能力
  3. 统一的设计规范: 所有插件遵循统一的设计规范,使用体验一致
  4. 活跃的社区维护: 基于 Flutter 社区维护的 plus_plugins,有活跃的社区支持

5.2 使用建议

  1. 权限配置: 使用 connectivity_plus 插件时,记得在 module.json5 文件中添加网络权限
  2. 资源管理: 对于流监听操作,记得在不需要时及时取消订阅,避免内存泄漏
  3. 版本兼容性: 确保使用的 Flutter 和 OpenHarmony SDK 版本与插件兼容(详见各插件的兼容性说明)
  4. 错误处理: 在调用异步 API 时,建议添加适当的错误处理逻辑
  5. 测试覆盖: 在不同的网络环境和电池状态下测试应用,确保功能正常

5.3 注意事项

  1. 本适配方案仅供应用厂商中已支持 Flutter 框架的设备在移植 OpenHarmony 系统过程中作为备选方案使用
  2. 由于是自定义修改版本,使用时请关注更新日志,及时获取最新修复和功能
  3. 在使用过程中遇到问题,可通过 GitHub Issues 反馈

六、参考资料

七、开源协议

本适配方案基于 BSD-3-Clause License 开源,详见项目 LICENSE 文件。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐