【发布时间】:2021-10-17 18:54:46
【问题描述】:
我正在尝试使用 Flutter 在我的网站中显示自定义的 404 未找到页面。
我正在使用以下代码:
MaterialApp(
debugShowCheckedModeBanner: false,
initialRoute: "/",
routes: {
"/": (context) => Scaffold(),
"/test": (context) => TestPage()
},
onUnknownRoute: (settings) {
return MaterialPageRoute(builder: (_) => Scaffold(
body: Center(
child: Text("Page not found !"),
),
));
},
我已重建我的应用并使用 Firebase 托管进行部署。但是,如果我输入错误的网址,我会看到这个:
由于我使用的是颤振,我真的不想像它所说的那样添加一个 .html 文件,即使它有效。
我宁愿显示一个内置 dart 的自定义页面。
在这种情况下如何显示我的自定义“找不到页面”?
编辑:
这是我当前的firebase.json 文件:
{
"hosting": {
"cleanUrls": true,
"public": "build/web",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}
我试过什么没用:
- 没有重写
- 进行重写,希望 Flutter 路由能够领先
- 在本地测试项目
- 根据documentation将Flutter路由策略从URL改为PATH
最后:
- 我网站中的现有页面运行良好
- 所有错误的 url 都被重定向到 /index.html
唯一有效的是:
- 在我的 /build/web 文件夹中添加 404.html 文件
- 删除
firebase.json中的重写
但这不是我想要的,我想显示我的 not_found_page.dart。
这可能是一个 Flutter 问题,我在此期间保持开放,但我会更深入地研究 Flutter 方面。
【问题讨论】:
-
尝试使用其他设备...可能会缓存旧版本。如果可能的话,您能否分享 URL,以便这里的任何人都可以测试它?
-
我已经在 Chrome 和 Safari 上进行了测试,在第一台 :/ 和另一台计算机上都清除了缓存
标签: firebase flutter dart firebase-hosting