我正在尝试从Firebase存储加载缩略图,以提高我的应用程序的性能。加载缩略图后,应显示实际图像。出于这个原因,我实现了一个云功能,它自动上传每个图像的缩略图。
从上传的图像中获取下载URL没有问题。但由于原因,缩略图的生成需要3秒,我无法从缩略图中自动检索下载URL。
这是我到目前为止所得到的:
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()
的downloadUrlThumb()
方法的任何想法?
完成缩略图创建后,您可以将记录写入数据库 并订阅该表的更新,以便在添加记录时在客户端应用程序中收到通知。 如果将上载文件(或缩略图路径)的路径写入数据库,则可以确定已完成的上载/缩略图创建。
在云功能中,您可以在生成缩略图后将URL保存到firestore中。
示例:保存记录后
{
hello: "world",
imageUrl: "asldnbalskd.firebase.storage.com"
}
大约5秒钟后生成缩略图
{
hello: "world",
imageUrl: "asldnbalskd.firebase.storage.com",
imageUrlThumbnail: "thumbnail-asldnbalskd.firebase.storage.com"
}
在颤动的一面,你可以只听取文件的任何变化。