如何在每个部署器上更新Flutter Web应用程序缓存文件?

mhd8tkvw  于 2023-05-23  发布在  Flutter
关注(0)|答案(2)|浏览(238)

我使用自定义flutter本地化与包含所有应用程序字符串的en.json文件,但在第一次部署web应用程序后,flutter service worker缓存en.json,它将使用第一个缓存的en.json进行所有后续部署,这会导致新的Text小部件包含新字符串(不在第一个en.json中)失败Assertdata != null。是否有办法强制flutter web应用程序在每次部署后更新缓存资产?

q1qsirdb

q1qsirdb1#

这是因为在客户端后台运行的service worker。如果你不需要缓存和PWA功能,你可以在没有它的情况下构建应用程序。

flutter build web --pwa-strategy=none

在此之后,您必须确保从客户端取消注册所有服务工作者,否则您仍然会看到旧的en.json。您可以将此脚本添加到index.html中

<script>
if ('serviceWorker' in navigator) {
 navigator.serviceWorker.getRegistrations()
  .then(function(registrations) {
     for(let registration of registrations) {
       registration.unregister();
     }
 });
}
</script>
af7jpaap

af7jpaap2#

您可以使用Firestore监听器真实的访问特定文档或Firebase Remote Config,以检查是否需要清除该高速缓存。
一旦它需要清除网页缓存,只需运行:

import 'dart:html' as html show window;
html.window.location.reload();

https://firebase.google.com/docs/remote-config

相关问题