Flutter Firebase 上传多张图片
Posted
技术标签:
【中文标题】Flutter Firebase 上传多张图片【英文标题】:Flutter Firebase upload multiple images 【发布时间】:2020-08-14 04:05:44 【问题描述】:上传多张图片并等待URL列表,几秒钟后图片成功加载到firestore并返回url,但在此之前future函数返回null
Future<List<dynamic>> uploadImage() async
_imageFile.forEach((image) async
String rannum = Uuid().v1();
StorageReference reference =
FirebaseStorage.instance.ref().child('Reviews').child(rannum);
StorageUploadTask uploadTask = reference.putFile(image);
StorageTaskSnapshot downloadUrl = (await uploadTask.onComplete);
String _url = await downloadUrl.ref.getDownloadURL();
_urllist.add(_url);
);
return _urllist;
【问题讨论】:
【参考方案1】:你必须像这样调用你的函数:
uploadImage(_imageFile).then((List<String> urls) => urls.forEach((element) => print(element)))
我也改变了你的功能:
Future<List<String>> uploadImage(List<File> _imageFile) async
List<String> _urllist = [];
await _imageFile.forEach((image) async
String rannum = Uuid().v1();
StorageReference reference =
FirebaseStorage.instance.ref().child('Reviews').child(rannum);
StorageUploadTask uploadTask = reference.putFile(image);
StorageTaskSnapshot downloadUrl = await uploadTask.onComplete;
String _url = await downloadUrl.ref.getDownloadURL();
_urllist.add(_url);
);
return _urllist;
我也不明白你为什么用括号括起来“await uploadTask.onComplete”
【讨论】:
谢谢,我尝试了你的建议,但它不起作用。仍然收到空白列表 是的,您必须将下载 url 存储为 String 而不是 Dynaminc,我更新了我的答案 我试过这个选项,但我仍然面临同样的问题。在多张图片上传时,该功能不会等待所有下载 URL。我已经用 future.delayed 更改了函数。 你能发布你如何称呼这个未来吗?因为它是 Future,所以它是异步的,你必须等待答案 我使用 .then 作为 uploadImage().then((photourl)以上是关于Flutter Firebase 上传多张图片的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 无法上传从 multi_image_picker 获取的多张图片
将多张图片上传到 Firebase 并检索到 viewpage
React Native Firebase 多张图片上传问题