鸿蒙Flutter仓库停止更新?

停止更新

在这里插入图片描述

熟悉 Flutter 鸿蒙开发的小伙伴应该知道,Flutter 3.7.12 鸿蒙化 SDK 已经在开源鸿蒙社区发布快一年了, Flutter 3.22.x 的鸿蒙化适配一直由鸿蒙突击队仓库提供,最近有小伙伴反馈已经 2 个多月没有停止更新了,不少人以为停止维护了。

并非如此。

迁移合并

Flutter 的鸿蒙适配工作一直在进行,文章鸿蒙Flutter实战:15-Flutter引擎Impeller鸿蒙化、性能优化与未来 中详细介绍了适配的工作内容和未来规划,作者在之前的文章原开源鸿蒙仓库停止更新中提到,随着开源鸿蒙仓库集体迁移到 gitcode由鸿蒙突击队维护的3.22.x版本的Flutter SDK也已合并至开源鸿蒙的Flutter主仓库,目前以分支 3.22.0-ohos 的形式存在。

至此,Flutter 鸿蒙化工作完成初步整合,两个大版本使用一个仓库同时维护。

总结回顾

Flutter 鸿蒙 SDK 仍然活跃,最近的一次更新在4天前。如果需要使用 FVM 安装 3.22 版本的 SDK,可使用以下命令:

git clone -b 3.22.0-ohos https://gitcode.com/openharmony-sig/flutter_flutter.git custom_3.22.0

如果需要使用 FVM 安装 3.7.12 版本的 SDK,可使用以下命令:

git clone -b br_3.7.12-ohos-1.0.6 https://gitcode.com/openharmony-sig/flutter_flutter.git custom_3.7.12

以下是所有涉及 Flutter 鸿蒙化的仓库地址:

  • Flutter sdk https://gitcode.com/openharmony-sig/flutter_flutter
  • Flutter engine https://gitee.com/openharmony-sig/flutter_engine
  • Flutter packages https://gitcode.com/openharmony-sig/flutter_packages
  • Flutter sample 示例库 https://gitcode.com/openharmony-sig/flutter_samples

其他 gitee/openharmony-sig 下的三方库,替换域名即可,如 flutter inappwebview 迁移至 https://gitcode.com/openharmony-sig/flutter_inappwebview

另外提一下,也有小伙伴在使用 Flutter 3.7.12 版本,那 SDK 也同样需要切换源地址,更换下域名即可。

### 鸿蒙系统对 flutter_downloader 插件的支持 在鸿蒙系统上使用 `flutter_downloader` 插件时,需注意其依赖原生 Android 实现,而鸿蒙系统具备兼容 Android 应用的能力,因此该插件在大多数情况下可以正常运行。然而,由于鸿蒙系统在权限管理、后台任务调度等方面有所调整,因此在使用时需要进行适配[^1]。 ### 插件配置与使用 `flutter_downloader` 是一个基于 `WorkManager` 的插件,支持后台下载、暂停与恢复功能,适用于需要长时间运行的下载任务。其使用方法如下: 1. **添加依赖** 在 `pubspec.yaml` 文件中添加插件依赖: ```yaml dependencies: flutter_downloader: ^1.12.0 ``` 2. **初始化插件** 在应用启动时初始化插件,并设置最大并发任务数: ```dart final dl = FlutterDownloader(); await dl.initialize(maxConcurrentTasks: 3); ``` 3. **下载文件** 使用 `enqueue` 方法发起下载任务: ```dart final taskId = await dl.enqueue( url: "https://example.com/file.apk", savedDir: "/storage/emulated/0/Download", fileName: "file.apk", showNotification: true, openFileFromNotification: true, ); ``` 4. **监听下载状态** 通过 `bindCallback` 方法监听任务状态变化: ```dart dl.bindCallback((id, status, progress) { if (id == taskId) { print("Download status: $status, Progress: $progress%"); } }); ``` 5. **请求权限** 鸿蒙系统对文件访问权限控制较严格,需在 `AndroidManifest.xml` 中添加如下权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ``` 并在运行时请求权限: ```dart final status = await PermissionHandler().checkPermissionStatus(PermissionGroup.storage); if (status != PermissionStatus.granted) { await PermissionHandler().requestPermissions([PermissionGroup.storage]); } ``` ### 鸿蒙系统适配要点 - **文件路径限制**:鸿蒙系统从 Android 10 开始限制直接访问外部存储,建议使用 `path_provider` 获取应用专属目录进行文件保存[^1]。 - **后台任务限制**:鸿蒙系统可能会限制后台任务的网络访问,建议结合 `flutter_background_service` 插件管理后台下载流程。 - **断点续传支持**:`flutter_downloader` 支持断点续传功能,但在鸿蒙系统中需确保服务器支持 `Range` 请求头,并在下载时开启相应配置[^2]。 ### 示例代码 以下是一个完整的下载任务配置示例: ```dart import 'package:flutter/material.dart'; import 'package:flutter_downloader/flutter_downloader.dart'; import 'package:permission_handler/permission_handler.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); final dl = FlutterDownloader(); await dl.initialize(maxConcurrentTasks: 3); final status = await PermissionHandler().checkPermissionStatus(PermissionGroup.storage); if (status != PermissionStatus.granted) { await PermissionHandler().requestPermissions([PermissionGroup.storage]); } runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: Text("Flutter Downloader")), body: Center( child: ElevatedButton( onPressed: () async { final taskId = await FlutterDownloader().enqueue( url: "https://example.com/file.apk", savedDir: "/storage/emulated/0/Download", fileName: "file.apk", showNotification: true, openFileFromNotification: true, ); FlutterDownloader().bindCallback((id, status, progress) { if (id == taskId) { print("Download status: $status, Progress: $progress%"); } }); }, child: Text("Download File"), ), ), ), ); } } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少湖说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值