场景:用户转到个人资料页面并点击个人资料图片(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/