我正在尝试从Firebase Storage加载缩略图,以提高应用程序的性能。加载缩略图后,应显示实际图像。因此,我实现了云功能,该功能会自动为每个图像上传缩略图。
从上载图片获取下载网址没有问题。但是由于这个原因,缩略图的生成需要3秒钟,所以我无法自动从缩略图中检索下载网址。
这是我到目前为止的想法:
Future uploadImage(var imageFile) async {
var uuid = new Uuid().v1();
StorageReference ref = FirebaseStorage.instance.ref().child("post_$uuid.jpg");
StorageUploadTask uploadTask = ref.putFile(imageFile);
String downloadUrl = await (await uploadTask.onComplete).ref.getDownloadURL();
StorageReference reff = FirebaseStorage.instance.ref().child("thumb_post_$uuid.jpg");
String url = (await reff.getDownloadURL()).toString();
setState(() {
downloadUrlThumb = url;
downloadUrlFull = downloadUrl;
});
}
关于如何等待上传的缩略图或如何延迟getDownloadURL()
的{{1}}方法的任何想法?
答案 0 :(得分:2)
完成缩略图创建后,您可以将记录写到数据库中
并订阅该表的更新,以在添加记录时在客户端应用中获得通知。
如果您将上传文件的路径(或缩略图路径)写入数据库,则可以确定完成了哪个上传/缩略图创建。
答案 1 :(得分:0)
在云功能中,您可以在生成缩略图后将网址保存到Firestore中。
示例: 保存记录后
{
hello: "world",
imageUrl: "asldnbalskd.firebase.storage.com"
}
大约5秒钟后生成缩略图
{
hello: "world",
imageUrl: "asldnbalskd.firebase.storage.com",
imageUrlThumbnail: "thumbnail-asldnbalskd.firebase.storage.com"
}
在颤动的一面,您可以只听文档进行任何更改。