尽管 url 未更改,但 Flutter 强制重新加载图像事件

标签 flutter

场景:用户转到个人资料页面并点击个人资料图片(URL a/b/c),这会打开图片选择器。然后将选择的图像上传到 firebase 说 a/b/c url。图像现在已更改,但图像 URL 未更改。

我尝试使用 CachedNetworkImage 和 FadeInImage 但即使我调用 setState 也没有刷新图像。

setState(() {
   _userProfilePicUrl = _userProfilePicUrl;
 }); 

我也尝试过但没有运气。
await DefaultCacheManager().removeFile(url);
await DefaultCacheManager().putFile(url, bytes);

如何在不重新启动应用程序的情况下使用相同的 url 刷新图像。

最佳答案

成功将新文件上传到您的服务器后,您可以从 CachedNetworkImage 类调用以下静态方法:

Future<void> removeUrlFromCache(String photoUrl) async {
    await CachedNetworkImage.evictFromCache(photoUrl);
}
它是一种异步方法,因此请确保使用 async/await。
通过从缓存中删除 url,下次使用 CachedNetworkImage Widget 和相同的 photoUrl 构建 Widget 时,新图像将被下载并存储在缓存中:
Widget _buildPhotoWidget(String photoUrl) {
    return CachedNetworkImage(
        imageUrl: photoUrl, 
    );
}

关于尽管 url 未更改,但 Flutter 强制重新加载图像事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57708199/

相关文章:

flutter - 如何在flutter中的 ListView 中展示广告?

flutter - 如何解决 '_positions.isNotEmpty' : ScrollController not attached to any scroll views?

flutter : How to center an icon next to hint text inside an input decoration?

flutter - 如何在 Flutter 中截取 CameraPreview 的屏幕截图?

flutter - 如何在 google flutter 中对齐行中的文本小部件?

flutter - 如何在 flutter 中等待 setter/getter ?

flutter - 如何设置或删除按钮(RaisedButton)的圆角半径?

flutter - 集成测试中的ListView(Flutter)

android - 在 flutter 插件类中捕获 onNewIntent()

dart - Flutter Socket.listen() 接收到不完整的数据