Flutter web 自定义 url 路由导致 404

Posted

技术标签:

【中文标题】Flutter web 自定义 url 路由导致 404【英文标题】:Flutter web custom url route results in 404 【发布时间】:2021-11-03 15:41:24 【问题描述】:

我正在使用 Flutter Web 构建网站。我的网站中有两条主要路线,一个 LoginPage,它也是 initialRoute 和一个 HomePage。 我使用Get 在路线之间移动,并使用url_strategy 包设置路径导航策略。

Main.dart

Future<void> main() async 
  WidgetsFlutterBinding.ensureInitialized();
  setPathUrlStrategy();
  runApp(MyApp());


class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return GetMaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'website',
      unknownRoute: GetPage(
        name: '/notfound',
        page: () => UnknownRoutePage(),
      ),
      initialRoute: '/LoginPage',
      getPages: [
        GetPage(
          name: '/LoginPage',
          page: () => LoginPage(),
        ),
        GetPage(
          name: '/HomePage',
          page: () => HomePage(),
        )
      ],
    );
  

同时,当我在我的电脑上调试时一切正常(即使使用 flutter run --release)我在 Firebase 托管上部署网站时遇到问题。

假设我尝试重新加载一个页面(例如 www.website.com/LoginPage)我从 Firebase Hosting 中找不到默认页面(即使我设置了一个自定义的未找到页面),而我希望被重定向到 LoginPage我的网站。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

我想出了如何解决这个问题,刚刚添加

"rewrites": [ 
   "source": "**",
   "destination": "/index.html"
 ]

到我的 firebase.json 文件。

【讨论】:

太棒了,谢谢!

以上是关于Flutter web 自定义 url 路由导致 404的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Web 和 Django 直接从 URL 路由

如何使用 onGenerateRoute 在 URL 中显示 Flutter Web 路由名称?

如何使用 GetX 包管理 Flutter Web URL 路由?

匹配单个特定 url 的自定义路由

Flutter自定义路由PageRouteBuilder

Flutter:将命名路由与自定义页面路由构建器一起使用?