Flutter-从Firebase存储中获取所有图像

时间:2019-10-16 08:42:24

标签: android flutter dart

我正在将图像手动上传到Web中的Firebase存储控制台。我想将所有图像下载到我的Flutter Android应用程序。但是使用getDownloadUrl()方法一次只能获取一张图像。

在android中,listAll()方法列出此StorageReference下的所有项目(文件)和前缀(文件夹)。

像这样,有人建议我扑朔迷离。

我看到了堆栈溢出问题的答案,例如没有可立即下载所有图像的api。但是任何建议/想法都会很棒。

2 个答案:

答案 0 :(得分:0)

最后找到了解决方案。

Flutter包firebase_storage:^ 3.0.6没有名为listAll()的方法。仅能使用Firebase存储中的getDownloadURL()方法获取单个文件/图像下载URL。

最近(19小时前,2019年10月16日),flutter团队添加了此功能,以使用listAll()方法获取所有文件和文件夹。以下是git链接。

https://github.com/FirebaseExtended/flutterfire/pull/232

需要使用pubspec.yaml中的软件包,如下所示:

firebase_storage:
    git:
      url: git://github.com/danysz/flutterfire.git
      ref: master
      path: packages/firebase_storage

这是临时解决方案,直到他们更新此软件包版本firebase_storage:^ 3.0.6

Example Code : 

void getFirebaseImageFolder() {
    final StorageReference storageRef =
        FirebaseStorage.instance.ref().child('Gallery').child('Images');
    storageRef.listAll().then((result) {
      print("result is $result");
    });
  }

希望对许多人有用。编码愉快!

答案 1 :(得分:-1)

如果仅需要特定的图像,则可以使用Image.network(url)方法来检索图像。唯一要做的就是复制与您的特定图像有关的access token并将其粘贴到Image.newtork(url)内。请记住用''覆盖该URL。 否则,您可以使用下面的方法

Future downloadImage()async{
    StorageReference _reference=FirebaseStorage.instance.ref().child("images/$_imageName.png");
    String downloadAddress=await _reference.getDownloadURL();
    setState(() {
      _downloadUrl=downloadAddress;
    });
  }

现在您可以使用Image.network(_downloadUrl)来检索图像了。