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

Pat*_*ola 5 flutter

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

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

setState(() {
   _userProfilePicUrl = _userProfilePicUrl;
 }); 
Run Code Online (Sandbox Code Playgroud)

我也尝试跟随但没有运气。

await DefaultCacheManager().removeFile(url);
await DefaultCacheManager().putFile(url, bytes);
Run Code Online (Sandbox Code Playgroud)

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

小智 3

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

Future<void> removeUrlFromCache(String photoUrl) async {
    await CachedNetworkImage.evictFromCache(photoUrl);
}
Run Code Online (Sandbox Code Playgroud)

它是一种异步方法,因此请确保使用 async/await。

通过从缓存中删除 url,下次使用 CachedNetworkImage Widget 和相同的 photoUrl 构建 Widget 时,将下载新图像并将其存储在缓存中:

Widget _buildPhotoWidget(String photoUrl) {
    return CachedNetworkImage(
        imageUrl: photoUrl, 
    );
}
Run Code Online (Sandbox Code Playgroud)