在Flutter中如何使用CachedNetworkImage显示Firebase的离线图像?

时间:2018-05-20 13:16:33

标签: android firebase dart flutter firebase-storage

我正在尝试使用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),

1 个答案:

答案 0 :(得分:3)

您也需要保存网址。一个好地方可能在你在firestore中的图像引用中。

另一个选择是使用本地文件,因为你说你知道路径,但我认为通过URL引用更清晰。