在 Flutter 中,如何使用 CachedNetworkImage 显示来自 Firebase 的离线图像?
Posted
技术标签:
【中文标题】在 Flutter 中,如何使用 CachedNetworkImage 显示来自 Firebase 的离线图像?【英文标题】:In Flutter how do I show offline images from Firebase using CachedNetworkImage? 【发布时间】:2018-10-30 07:20:45 【问题描述】:我正在尝试让我的 Flutter 应用与 Firebase 脱机工作。我将对我的图像的引用存储在 Firestore 上,并将图像文件存储在 Storage 上。我让 Firestore 部分工作,我正在使用 CachedNetworkImageProvider 来显示我的图像,这些图像会缓存以供离线使用。但是当我离线时,即使图片被缓存了,我也无法获取图片的URL,所以我无法将它传递给CachedNetworkImageProvider,它以URL为key。
所以在离线时我知道图像路径,并且我将文件存储在设备上,我只需要一种获取 URL 的方法。
我是否需要手动将存储中的下载 URL 存储在设备上,以便我可以离线使用它们?还是有更好的办法?
获取网址的代码:
// this doesn't work offline
category.url = await storage
.ref()
.child("category_images/drawable-$DeviceInfo.dpiString")
.child(document.data["media"]["src"])
.getDownloadURL();
显示图像的代码:
image: new CachedNetworkImageProvider(_category.url),
【问题讨论】:
【参考方案1】:您还需要保存 URL。一个好地方可能是您在 Firestore 中的图像参考。
另一个选项是使用本地文件,因为您说您知道路径,但我认为通过 URL 引用更简洁。
【讨论】:
我以为我不应该因为令牌而保存 URL,但你的回答让我挖了北斗,我发现令牌实际上与内容相关,而不是用户或日期,这意味着我可以存储和使用它。我会接受你的回答。谢谢!以上是关于在 Flutter 中,如何使用 CachedNetworkImage 显示来自 Firebase 的离线图像?的主要内容,如果未能解决你的问题,请参考以下文章
Flutter-如何在flutter的整个应用程序生命周期中将数据保存在内存中?
如何在 Flutter 中使用 GestureDetector 隐藏 appBar?
如何在 Flutter 的原生 C++ 中使用 OpenCV 4(2021 年)(支持 Flutter 2.0)? [关闭]
如何在 Dart / Flutter 中使用另一个文件的函数?
在 Flutter 中,我们如何使用 Firebase Messaging onBackgroundMessage 创建通知,使用flutter_local_notifications?