由于内网无法正常访问到谷歌相关资源站点,导致canvaskit.js和字体资源(fonts.gstatic.com)无法被加载,项目部署后显示白屏。
所以,通过修改资源引用地址,来解决这个问题:canvaskit.js相关资源是打包后就存在了的,但是项目没有进行引用,仍然会从网络获取,所以只需要更改下引用地址就好,字体资源使用镜像站解决。
①在项目的根目录的web目录下,新建flutter_bootstrap.js文件
{{flutter_js}}
{{flutter_build_config}}
const loading = document.createElement('div');
document.body.appendChild(loading);
loading.textContent = "Loading Entrypoint...";
_flutter.loader.load({
config: {'canvasKitBaseUrl': 'canvaskit/'},
serviceWorkerSettings: {
serviceWorkerVersion: {{flutter_service_worker_version}},
},
onEntrypointLoaded: async function(engineInitializer) {
loading.textContent = "Initializing engine...";
const appRunner = await engineInitializer.initializeEngine({'fontFallbackBaseUrl': 'https://fonts.gstatic.cn/s/'});
loading.textContent = "Running app...";
await appRunner.runApp();
}
});
②将index.html文件中flutter_bootstrap.js的引用方式改为下面的方式:
<script>
{{flutter_bootstrap_js}}
</script>
至此,修改完成,可使用python3开启web服务进行验证!(python -m http.server 8000)
内网有时候,互联网都访问不到,那么可以将镜像站点改为本地的文件目录,比如将字体资源按照需要的路径放入一个文件夹内:
const appRunner = await engineInitializer.initializeEngine({'fontFallbackBaseUrl': '/fonts/'});