我使用自定义flutter本地化与包含所有应用程序字符串的en.json文件,但在第一次部署web应用程序后,flutter service worker缓存en.json,它将使用第一个缓存的en.json进行所有后续部署,这会导致新的Text小部件包含新字符串(不在第一个en.json中)失败Assertdata != null。是否有办法强制flutter web应用程序在每次部署后更新缓存资产?
en.json
Text
data != null
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>
af7jpaap2#
您可以使用Firestore监听器真实的访问特定文档或Firebase Remote Config,以检查是否需要清除该高速缓存。一旦它需要清除网页缓存,只需运行:
import 'dart:html' as html show window; html.window.location.reload();
https://firebase.google.com/docs/remote-config
2条答案
按热度按时间q1qsirdb1#
这是因为在客户端后台运行的service worker。如果你不需要缓存和PWA功能,你可以在没有它的情况下构建应用程序。
在此之后,您必须确保从客户端取消注册所有服务工作者,否则您仍然会看到旧的
en.json
。您可以将此脚本添加到index.html中af7jpaap2#
您可以使用Firestore监听器真实的访问特定文档或Firebase Remote Config,以检查是否需要清除该高速缓存。
一旦它需要清除网页缓存,只需运行:
https://firebase.google.com/docs/remote-config