Flutter从Firebase Storage获取下载网址

时间:2019-04-05 13:11:37

标签: dart flutter firebase-storage

我正在尝试从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}}方法的任何想法?

2 个答案:

答案 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"
}

在颤动的一面,您可以只听文档进行任何更改。