SDK 升级后 Flutter Web 中的图标错误

Posted

技术标签:

【中文标题】SDK 升级后 Flutter Web 中的图标错误【英文标题】:Wrong icons in Flutter Web after SDK upgrade 【发布时间】:2021-08-21 17:07:00 【问题描述】:

在 SDK 升级后重建我的 Flutter Web 应用程序时,访问过该应用程序以前版本的浏览器现在显示错误的图标。清除这些浏览器中的浏览数据时问题消失了(但这显然不是所有访问者的解决方案)。

我的假设是main.dart.js 已使用服务器的最新版本正确刷新,但MaterialIcons-Regular.otf 仍从浏览器磁盘缓存中加载。

这个解释有意义吗?

有什么办法可以避免这个问题吗?

使用示例应用重现问题的步骤:

    使用 Flutter 2.0.0 创建和构建 Flutter Web 应用,并将其部署在 Web 服务器上 使用浏览器访问应用程序 使用 Flutter 2.2.1 重新构建应用并进行部署 在浏览器中刷新应用

【问题讨论】:

【参考方案1】:

当 service worker 尝试刷新图标文件时,浏览器从磁盘缓存中获取它,而不是请求服务器。为了避免这种情况,我修改了 Web 服务器的配置,在响应中添加“无缓存”标头,并在服务工作者请求时强制浏览器从服务器获取文件。

在我添加的 Apache Virtualhost 的配置中:

    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0

【讨论】:

以上是关于SDK 升级后 Flutter Web 中的图标错误的主要内容,如果未能解决你的问题,请参考以下文章

如何解决Flutter SDK升级后报错问题

flutter web:lottie jssdk报错处理

升级到最新的 SDK 版本 1.20.4 后运行/调试 Flutter 应用程序非常慢

Flutter 项目升级报错处理

Flutter web,图标呈现错误的图标

升级Flutter sdk