Flutter Android/iOS开发如何将链接文件下载至Downloads目录
Flutter双端下载文件到系统公共Downloads目录解决方案
推荐使用的依赖库
以下是目前仍在活跃维护、兼容性覆盖全系统版本的常用库:
flutter_downloader: 原生层实现的跨平台下载工具,支持断点续传、进度监听、后台下载,自带公共存储目录写入能力permission_handler: 统一管理双端权限申请path_provider: 辅助获取目录路径
核心实现步骤
1. 权限配置与申请
- Android端:
在android/app/src/main/AndroidManifest.xml中添加对应权限声明:<!-- Android 13+ 通知权限(下载进度提示需要) --> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <!-- Android 10及以下存储权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="29" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> - iOS端:
在ios/Runner/Info.plist中添加权限声明:
权限申请统一使用<key>NSDownloadsFolderUsageDescription</key> <string>需要访问下载目录保存文件</string> <!-- 开启文件App可见配置 --> <key>UIFileSharingEnabled</key> <true/> <key>LSSupportsOpeningDocumentsInPlace</key> <true/>permission_handler调用对应权限的请求方法即可。
2. 下载任务初始化
直接使用flutter_downloader配置任务时开启公共存储参数即可自动保存到系统Downloads目录,示例代码:
final taskId = await FlutterDownloader.enqueue( url: '你的资源下载链接', savedDir: (await getTemporaryDirectory()).path, // 开启公共存储后该参数会被自动覆盖,可传入任意合法临时路径 saveInPublicStorage: true, // 核心参数,开启后自动写入双端公共Downloads目录 showNotification: true, openFileFromNotification: true, );
注意事项
- Android11及以上系统无需申请额外存储权限,只要通过系统DownloadManager写入公共目录即可,
flutter_downloader已自动适配该逻辑 - iOS端开启
UIFileSharingEnabled后,用户可以在系统「文件」App的「我的iPhone/iPad」分类下直接看到下载的文件 - 大文件下载建议开启断点续传配置,避免网络中断后重复下载
内容的提问来源于stack exchange,提问作者Khamidjon Khamidov
相关产品推荐
相关产品推荐

