You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:06:04