【问题标题】:Flutter cached image is it possible to reload image instead of getting the cached image?Flutter缓存图像是否可以重新加载图像而不是获取缓存图像?
【发布时间】:2020-06-01 19:51:27
【问题描述】:

我正在使用 flutter_cached_network_image 包从 firebase 加载图像。当用户更新他的个人资料图片(文件名仍然相同)时,加载的图像仍然与更新前的图像相同,因为它是从缓存中加载的(因为它仍然具有与以前相同的 url)。 是否可以从缓存中清除图片以便加载新图片?

【问题讨论】:

    标签: image firebase flutter caching


    【解决方案1】:

    目前显然没有解决方案。见这里:https://github.com/Baseflow/flutter_cached_network_image/issues/77

    我使用地址中的图像版本来解决这个问题。比如:https://example.com/image.jpg?version=14

    【讨论】:

    • 谢谢。版本号从何而来?它是您跟踪的附加变量吗?
    • 就我而言,每次用户更改照片时,我都会在数据库中增加版本。但正如@Renê 评论的那样,这可以通过多种方式实现(例如:随机类)
    • 使用随机数代替跟踪
    【解决方案2】:

    我遇到了同样的问题。这对我有帮助:

    imageCache.clearLiveImages();
    imageCache.clear();
    _bloc.add(ReloadEvent());
    

    成功更新照片后清理缓存并重建小部件。

    【讨论】:

    • 运行两行(clearLiveImages 然后清除)解决了我的问题。
    【解决方案3】:

    就像@EderBaum 说的,你可以强制输入一个额外的查询字符串,值取决于你想要的效果,例如:

    1 - 从不缓存 http:urlofresource.com/yourimage.jpg?version={NewRandonNumberGenerated}

    您可以使用Random 类来实现这一点。

    2- 根据应用版本重新加载缓存

    以前一样,但现在,您可以使用可以放入全局状态或其他位置的版本信息在更新后检索信息

    3 - 使用普通缓存

    让小部件完成工作。

    【讨论】:

    • 这正是我想要的!谢谢你。我现在正在跟踪每个用户个人资料图片的版本号,因此当版本号更改时,由于 version={newVersionNumber} 最终导致 url 更改
    • 不客气!如果我帮助你,你能投票给我的遮阳篷吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-10-01
    • 2012-01-06
    • 2012-01-28
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 2016-01-05
    相关资源
    最近更新 更多