Flutter web - 刷新浏览器时如何重定向到根页面(或任何其他页面)?

nav*_*vid 3 browser redirect reload flutter flutter-web

当用户尝试刷新浏览器中的当前页面时,我需要重定向到根页面。默认行为是打开同一页面。我尝试使用onBeforeUnload此答案)和window.location.replace或进行重定向Navigator.push,但都不起作用。

nav*_*vid 7

对我有用的是检查 JS 中的刷新状态(检查重新加载),然后重定向。所以我在加载颤振代码之前添加了一个检查index.html

<script>

function isReload() {
  try {
    return (
      (window.performance.navigation && window.performance.navigation.type === 1) ||
        window.performance.getEntriesByType('navigation').map((nav) => nav.type).includes('reload')
    );
  } catch(err) {
    return false;
  }
}

if (isReload()) {
  console.log("Page accessed by reload, redirecting...");
  window.location.replace('/');
} else {
  window.addEventListener('load', function(ev) {
  // Download main.dart.js
  _flutter.loader.loadEntrypoint({
    serviceWorker: {
      serviceWorkerVersion: serviceWorkerVersion,
    }
  }).then(function(engineInitializer) {
    return engineInitializer.initializeEngine();
  }).then(function(appRunner) {
    return appRunner.runApp();
  });
  });
}

</script>
Run Code Online (Sandbox Code Playgroud)