如何阻止flutter web在每次构建时覆盖我的index.html?

Posted

技术标签:

【中文标题】如何阻止flutter web在每次构建时覆盖我的index.html?【英文标题】:How to stop flutter web from overwriting my index.html every build? 【发布时间】:2020-07-17 06:21:28 【问题描述】:

所以我正在使用flutter web + cloud firestore

要让 Cloud Firestore 正常工作,我必须修改我的 index.html。问题是每次我运行时

flutter build web

它覆盖了我的 index.html,我必须手动重新添加所有必要的代码 sn-ps 才能让它再次工作。

我可以在不覆盖 index.html 的情况下运行 flutter build web 吗?

另一个相关问题是,当我将站点部署到 firebase 时,它​​工作正常,但是当我在本地运行此站点以进行测试时

flutter run -d chrome

当它在 chrome 上运行时,该站点再次使用全新的 index.html 没有必要的代码,因此它不起作用。我没有机会编辑 index.html 以应用必要的代码,因为它会立即构建和运行。

有解决办法吗?

【问题讨论】:

【参考方案1】:

您应该修改<project>/web 文件夹中的index.html 文件,而不是<project>/build/web 文件夹中的文件。该文件将在构建过程中复制到<project>/build/web 文件夹。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Flutter web</title>
  <link href="https://fonts.googleapis.com/css?family=Raleway&display=swap" rel="stylesheet">
  <script defer src="main.dart.js" type="application/javascript"></script>
  <script src="https://www.gstatic.com/firebasejs/6.6.0/firebase-app.js"></script>
  <script src="https://www.gstatic.com/firebasejs/6.6.0/firebase-auth.js"></script>
</head>

<body>
  <h1>This text will be copied to the target HTML, but covered by flutter web app</h1>
</body>

</html>

【讨论】:

以上是关于如何阻止flutter web在每次构建时覆盖我的index.html?的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止 Flutter Web HtmlElementView 重建/重新运行?

如何在 Flutter 中覆盖supportedInterfaceOrientations?

如何阻止Visual Studio向我的web.config添加程序集?

Flutter:在浏览器中运行网页版时如何停止显示移动应用

如何在Lua中使用递归函数来动态构建表而不会在每次调用时覆盖它

Flutter:如何在 webview 中阻止全屏视频?