【问题标题】:Firebase Storage Resource Not Downloading in Flutter App在 Flutter 应用程序中未下载 Firebase 存储资源
【发布时间】:2022-01-26 19:09:34
【问题描述】:

我正在尝试根据 this documentation 从我的 Firebase 云存储项目下载 .mp3,但按下提升按钮(Android 模拟器)没有任何作用。当我什么都不说时,我在调用 getApplicationDocumentsDirectory() 后立即添加的打印语句永远不会输出到控制台。这个简单的代码逐字逐句来自 Firebase 文档,我错过了什么?我在 AndroidManifest 中添加了允许 INTERNET 和 WRITE_EXTERNAL_STORAGE 的权限。

  fs.FirebaseStorage storage = fs.FirebaseStorage.instance;

ElevatedButton(
              onPressed: () {
                Future<void> download() async {
                  Directory dir = await getApplicationDocumentsDirectory();
                  print("File downloading to : ${dir}");
                  File file = File(
                      '${dir.path}/track-title');

                  fs.DownloadTask task = storage
                      .ref(
                           'gs://project_name.appspot.com/track-title') 
                            // 'project_name/track-title' as shown in docs also does not work
                      .writeToFile(file);

                  task.snapshotEvents.listen((fs.TaskSnapshot snapshot) {
                    print('Task state: ${snapshot.state}');
                    print(
                        'Progress: ${(snapshot.bytesTransferred / snapshot.totalBytes) * 100} %');
                  }, onError: (e) {
                    // The final snapshot is also available on the task via `.snapshot`,
                    // this can include 2 additional states, `TaskState.error` & `TaskState.canceled`
                    print(task.snapshot);

                    if (e.code == 'permission-denied') {
                      print(
                          'User does not have permission to upload to this reference.');
                    }
                  });
                }
              },
              child: Text("Track Title")),

【问题讨论】:

  • 您的代码定义了一个名为download 的函数,但您实际上是在任何地方调用该函数吗?

标签: android firebase flutter dart firebase-storage


【解决方案1】:

您的代码定义了一个名为 download 的函数,但您实际上并未在任何地方调用该函数。

要执行您定义的download 函数中的代码,请在onPressed 的结束} 之前添加download()

ElevatedButton(
  onPressed: () {
    Future<void> download() async {
      ...
        if (e.code == 'permission-denied') {
          print(
              'User does not have permission to upload to this reference.');
        }
      });
    }
    download(); // ?
  },
  child: Text("Track Title")),

【讨论】:

    猜你喜欢
    • 2020-08-26
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多