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

如何在Flutter中实现将Firebase云存储文件下载到手机本地存储

Flutter 实现Firebase云存储PDF文件下载到本地教程

前置依赖配置

  1. 确保项目已完成Firebase基础接入,firebase_core已正常初始化
  2. 在pubspec.yaml中添加以下依赖:
dependencies:
  flutter:
    sdk: flutter
  firebase_storage: ^11.6.0 # 可替换为当前最新稳定版
  path_provider: ^2.1.1
  permission_handler: ^11.0.1
  1. 执行flutter pub get安装依赖

权限配置

Android端配置

在android/app/src/main/AndroidManifest.xml的<manifest>标签(注意不要写到<application>标签内部)添加以下权限:

<!-- 安卓12及以下版本存储权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<!-- 安卓13及以上版本文档访问权限 -->
<uses-permission android:name="android.permission.READ_MEDIA_DOCUMENTS" />

iOS端配置

在ios/Runner/Info.plist的<dict>标签内添加权限声明:

<key>NSDocumentDirectoryUsageDescription</key>
<string>需要访问文档目录存储下载的PDF文件</string>

按钮点击下载完整实现

直接替换你的onPressed代码为以下内容即可:

onPressed: () async {
  // 1. 申请存储权限
  var status = await Permission.storage.request();
  if (status.isDenied || status.isPermanentlyDenied) {
    // 权限被拒绝时的处理逻辑,可替换为项目内的提示弹窗
    print("存储权限被拒绝,无法下载文件");
    return;
  }

  try {
    // 2. 获取本地存储路径,这里选择应用的文档目录,用户可在文件管理中找到
    final dir = await getApplicationDocumentsDirectory();
    final localFile = File('${dir.path}/target_file.pdf'); // 可自定义本地保存的文件名

    // 3. 获取Firebase云存储的文件引用,替换为你实际的云端文件路径
    final ref = FirebaseStorage.instance.ref().child('your_cloud_pdf_path.pdf');

    // 4. 调用writeToFile执行下载
    await ref.writeToFile(localFile);

    // 下载成功后的处理逻辑
    print("PDF文件已下载到:${localFile.path}");
  } catch (e) {
    // 下载失败的异常处理
    print("下载失败:$e");
  }
},

关键逻辑说明

  • writeToFile是Firebase Storage官方SDK提供的下载方法,传入本地File对象即可自动将云端文件写入到指定路径,支持大文件断点下载
  • 如果需要监听下载进度,可以将writeToFile返回的DownloadTask单独保存,通过监听事件回调实现进度展示
  • 你也可以自定义本地存储路径,比如选择外部存储的公共下载目录,方便用户直接在系统下载文件夹中找到文件

内容的提问来源于stack exchange,提问作者ZXERSTON

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:09:04