从 url 中删除 # 后无法通过更改 url 在 flutter web 中导航

Dee*_*mod 6 flutter netlify flutter-dependencies flutter-web

我可以通过在搜索栏中输入 url 来更改托管在 netlify(手动部署)上的 flutter web的 url ,从而导航到其他页面,如下所示:- 在此输入图像描述

因此,如果我将 /home 更改为 /about 那么它会完美地引导我到 about 页面。但是为了从我的网址中删除这个“#”,我在我的 main.dart我的代码中添加了以下代码 :-

import 'package:url_strategy/url_strategy.dart';

void main()async {
  await Firebase.initializeApp();
  setPathUrlStrategy();//this removes the '#' from my url
  FluroRouting.setupRouter();
  runApp(MyApp());
}
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'My Website',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      initialRoute: '/home',
      onGenerateRoute: FluroRouting.router.generator,
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

路由代码是:-

class FluroRouting {
  static final router = FluroRouter();
  static Handler _aboutUsHandler = Handler(
      handlerFunc: (BuildContext context, Map<String, dynamic> params) =>
          AboutUs());
  static Handler _homeHandler = Handler(
      handlerFunc: (BuildContext context, Map<String, dynamic> params) =>
          HomePage());
  static void setupRouter() {
    router.define('/home', handler: _homeHandler,);
    router.define('/about', handler: _aboutUsHandler,);
  }
  static void navigateToPage({String routeName,BuildContext context}) {
    router.navigateTo(context, routeName, transition: TransitionType.none);
  }
  static void pushAndClearStackToPage({String routeName,BuildContext context}) {
    router.navigateTo(context, routeName, clearStack: true,transition: TransitionType.none);
  }
}
Run Code Online (Sandbox Code Playgroud)

这样做后,“#”已成功删除,但当我将 /home 更改为 /about 时,它显示页面未找到错误。 在此输入图像描述

小智 -1

我找到了这个问题的解决方案,至少就我而言,我最好的猜测是,在免费部署中配置路径域以测试 Surge、netlify 甚至 Firebase 托管等网站的方式破坏了 setPathURl() 的功能。我使用了之前购买的一个域名,它的工作方式就像一个魅力,但如果我尝试使用 firebase 托管域名访问同一个网站,它就不起作用。

使用真实域来测试 usePathUrlStrategy 的功能