我正在尝试使用Firebase使我的Flutter应用程序脱机工作。我在Firestore上存储对我的图像的引用,在Storage上存储图像文件。我让Firestore部分正常工作,我正在使用CachedNetworkImageProvider来显示我的图像,这些图像可以缓存以供离线使用。但是当我离线时,即使图像被缓存,我也无法获取图像的URL,因此我无法将其传递给CachedNetworkImageProvider,后者使用URL作为密钥。
因此,在离线时我知道图像路径,并且我将文件存储在设备上,我只需要一种获取URL的方法。
我是否需要在设备上手动存储Storage的下载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),
答案 0 :(得分:3)
您也需要保存网址。一个好地方可能在你在firestore中的图像引用中。
另一个选择是使用本地文件,因为你说你知道路径,但我认为通过URL引用更清晰。