英文:
Flutter : get url of all image in firebase storage folder
问题
以下是要翻译的部分:
当前情况
我在 Firebase 存储中有一个文件夹,其中包含我想在我的 Flutter 应用程序中使用的多张图片。我想要检索文件夹中所有图片的 URL,以便在 CircleAvatar 的 backgroundimage 中使用它。为了获取这些 URL,我正在使用两个函数。
getIconUrl(String name) async {
final ref = storageRef.child(name);
final url = await ref.getDownloadURL();
return url;
}
iconUrlFill(Map dict) async {
Map iconResult = {};
for (String key in dict.keys) {
var urlResult = getIconUrl(key);
iconResult[key] = urlResult;
}
return iconResult;
}
并尝试在 FutureBuilder 中使用它。
问题
上面的代码生成了一个 Map,其中键为 String,值为 Future<String>,我假设 Future<String> 包含了 URL。当我在 FutureBuilder 中使用 getIconUrl 时,我可以通过 snapshot.data!
访问 URL,但我不知道如何在 iconUrlFill 函数中做到这一点。
我寻求的解决方案
我寻求以下问题的解决方案:
- 如何在 iconUrlFill 函数的循环中访问由 getIconUrl 检索到的 Future<String> 内部的 URL?
- 有没有一种方法可以获取 Firebase 存储文件夹中所有图片的 URL?
英文:
Current Situation
I have folder in firebase storage that contain number of image I want to use in my flutter app.
I would like to retrive url for all the image in the folder to use it for networkimage in backgroundimage in CircleAvatar.
To fetch the url I'm using two fuction.
getIconUrl(String name) async {
final ref = storageRef.child(name);
final url = await ref.getDownloadURL();
return url;
}
iconUrlFill(Map dict) async {
Map iconResult = {};
for (String key in dict.keys) {
var urlResult = getIconUrl(key);
iconResult[key] = urlResult;
}
return iconResult;
}
and trying to use it in futurebuilder.
Problem
Code above result in Map that key of String and value of Future<String>, which I assume Future<String> are url. When I use getIconUrl for futureBuilder I can reach to url by snapshot.data! but I don't know how to do that in iconUrlFill function.
Solution I seek for
I'm looking for solution to either question
- how to reach to url inside Future<String>, retrieved by getIconUrl, inside loop f iconUrlFill function?
- is there way to gain all url of image in firebase storage folder?
答案1
得分: 1
因为你正在尝试从getIconUrl
获取未来的数据,所以你需要在该函数上使用await
来获取结果。
所以你的代码可能需要像这样:
Future getIconUrl(String name) async {
final ref = storageRef.child(name);
final url = await ref.getDownloadURL();
return url;
}
iconUrlFill(Map dict) async {
Map iconResult = {};
for (String key in dict.keys) {
var urlResult = await getIconUrl(key);
iconResult[key] = urlResult;
}
return iconResult;
}
希望这有所帮助。
如果我有任何误解,请务必告诉我。
英文:
Because you're trying to get the result from getIconUrl
which is future data you'll need to await on that function
So here's how your code might need to look like
Future getIconUrl(String name) async {
final ref = storageRef.child(name);
final url = await ref.getDownloadURL();
return url;
}
iconUrlFill(Map dict) async {
Map iconResult = {};
for (String key in dict.keys) {
var urlResult = await getIconUrl(key);
iconResult[key] = urlResult;
}
return iconResult;
}
hope it helped.
And obviously, please let me know if i misunderstood any part.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论