firebase - Flutter Firebase 上传多张图片
问题描述
上传多张图片并等待 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;
}
解决方案
你必须像这样调用你的函数:
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;
}
我也不明白你为什么用括号括起来“等待uploadTask.onComplete”
推荐阅读
- python - 卡在自动化无聊的东西第 2 章 - 继续声明
- python - 使用 matplotlib 可视化具有两个参数的 Dirichlet 分布
- html - 如何使 div 对象垂直和水平居中
- flutter - Flutter:MaterialPageRoute 路由“/”的构建器返回 null
- flutter - 将 JSON 数据动态添加到 Flutter Table Calendar
- javascript - Javascripct 二维数组 IndexOf
- python - Python Pcolormesh没有显示
- flutter - 全局变量最初包含随机值,然后在热重载时包含正确值
- go - 使用互斥锁和反射时的竞争条件
- git - git clone 失败,无法访问