近期有开发者反馈,在使用 Flutter 开发鸿蒙应用过程中,file_picker 和 file_selector 这两个三方库在鸿蒙系统上出现点击无响应的情况,而相同代码在安卓系统上却能正常拉起文件选择器。该项目使用的是 Flutter 3.22.0 ohos 版本,相关导入代码如下:
import 'package:file_selector/file_selector.dart';
import 'package:file_picker/file_picker.dart'; //导入filepicker
以下是出现问题的代码片段:
appBar: AppBar(
title: const Text('legado_flutter'),
actions: <Widget>[
//导航栏右侧菜单
IconButton(
icon: const Icon(Icons.add),
onPressed: () async {
//往下开始用filepick提供的方法
FilePickerResult? result =
await FilePicker.platform.pickFiles(
type: FileType.custom,
allowedExtensions: ['txt'], //筛选文件类型
);
//这就用完了,下面就赋值了
if (result != null) {
PlatformFile file = result.files.first;
aasd = file.path; //取数据,有name,path,size等等,这就取个文件地址
setState(() {
//刷新界面显示数据,否则下面的text不更新
});
} else {
// User canceled the picker
}
}),
],
// leading: Builder(builder: (context) {
// return IconButton(
// icon: Icon(Icons.dashboard, color: Colors.white), //自定义图标
// onPressed: () {
// // 打开抽屉菜单
// Scaffold.of(context).openDrawer();
// },
// );
// })
),
要解决鸿蒙系统下 file_picker 和 file_selector 无响应的问题,需要在 pubspec.yaml 中添加特定的 Git 依赖。请按照以下方式配置:
file_picker:
git:
url: "https://gitcode.com/openharmony-sig/fluttertpc_file_picker.git"
file_picker_ohos:
git:
url: "https://gitcode.com/openharmony-sig/fluttertpc_file_picker.git"
path: "ohos"
这里的 url 指向鸿蒙开源社区维护的三方库 Git 仓库地址,path 参数则指定了插件在仓库中的具体路径。对于是否需要额外添加_ohos 后缀的依赖,主要取决于原始插件的 pubspec.yaml 是否已经包含了鸿蒙版本的支持。
以 file_picker 为例,从其 pubspec.yaml 文件可以看出(如图所示),该插件并未默认引入 ohos 版本,因此需要手动添加 file_picker_ohos 依赖:。
CleanShot 2025-05-22 at 00.13.01@2x.png
通过上述配置,就可以解决 Flutter 开发鸿蒙应用时 file_picker 和 file_selector 点击无响应的问题。在集成其他三方库时,也建议检查其鸿蒙版本支持情况,按照类似方式处理,确保应用在不同平台上都能正常运行。
最后也给大家附上坚果派鸿蒙化的 Flutter 库。
序号 | 原仓 | 概述 | 版本 | 适配仓 |
---|---|---|---|---|
1 | https://pub.dev/packages/fluttertoast[1] | 获取联系人信息 | 8.2.12 | https://gitcode.com/nutpi/FlutterToast |
2 | https://pub.dev/packages/flutter_udid | UDID | 4.0.0 | https://gitcode.com/nutpi/flutter_udid |
3 | https://pub.dev/packages/flutter_exit_app | 退出 app | 1.1.4 | https://gitcode.com/nutpi/flutter_exit_app |
4 | https://pub.dev/packages/flutter_phone_direct_caller | 快速拨打电话 | 2.2.1 | https://gitcode.com/nutpi/flutter-phone-direct-caller |
5 | https://pub.dev/packages/flutter_native_contact_picker | 获取联系人信息 | 0.0.10 | https://gitcode.com/nutpi/flutter_native_contact_picker |
6 | https://pub.dev/packages/torch_light | 手电筒控制 | 1.1.0[2] | https://gitcode.com/nutpi/flutter_torch_light |
7 | https://pub.dev/packages/flutter_timezone | 时区获取 | 4.1.0[3] | https://gitcode.com/nutpi/flutter_timezone |
8 | https://pub.dev/packages/memory_info | 内存相关信息 | 0.0.4 | https://gitcode.com/nutpi/memory_info |
9 | https://pub.dev/packages/flutter_app_icon_badge | 桌面角标 | 2.0.0 | https://gitcode.com/nutpi/flutter_app_icon_badge |
10 | https://pub.dev/packages/battery_level_plus | 电池电量 | 0.0.4 | https://gitcode.com/nutpi/battery_level_plus |
11 | https://pub.dev/packages/app_badge_plus | 桌面角标 | 1.2.1 | https://gitcode.com/nutpi/app_badge_plus |
12 | https://pub.dev/packages/flutter_native_contact_picker_plus | 获取联系人信息 | 0.0.3 | https://gitcode.com/nutpi/flutter_native_contact_picker_plus |
13 | https://pub.dev/packages/flutter_native_timezone | 时区获取 | 2.0.0 | https://github.com/pinkfish/flutter_native_timezone |
坚果派社区由小波、狼哥等人创建,团队拥有数位华为 HDE 及 1000+HarmonyOS 开发者,以及若干其他领域的三十余位万粉博主/UP 主运营。
专注于分享的技术包括 HarmonyOS/OpenHarmony、仓颉、ArkUI-X、元服务、AI、BlueOS 操作系统等。团队成员主要聚集在北京,上海,南京,深圳,广州,苏州、长沙、宁夏等地,目前已为华为、vivo、腾讯、亚马逊以及三方技术社区提供各类开发咨询服务 100+。累计粉丝 100+w,孵化开发者 10w+,高校 20+、企业 10+。自研应用 40 款,三方库 80 个,鸿蒙原生应用课程 500+。持续助力鸿蒙仓颉等生态繁荣发展。
参考资料
[1]
https://pub.dev/packages/fluttertoast: https://pub.dev/packages/flutter_native_contact_picker
[2]
1.1.0: https://pub.dev/packages/torch_light/versions/1.1.0
[3]
4.1.0: https://pub.dev/packages/flutter_timezone/versions/4.1.0