我正在将图像手动上传到Web中的Firebase存储控制台。我想将所有图像下载到我的Flutter Android应用程序。但是使用getDownloadUrl()方法一次只能获取一张图像。
在android中,listAll()方法列出此StorageReference下的所有项目(文件)和前缀(文件夹)。
像这样,有人建议我扑朔迷离。
我看到了堆栈溢出问题的答案,例如没有可立即下载所有图像的api。但是任何建议/想法都会很棒。
答案 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)
来检索图像了。