Flutter web URL 导航像 http://localhost:60117/ItemDetails?pId=1 不工作

Flutter web URL navigation like http://localhost:60117/ItemDetails?pId=1 not working

在我的 flutter 项目中,我必须分享一个 URL,它通过社交媒体直接重定向到特定的产品详细信息页面。所以我使用 velocity_x 添加了路由信息,我的 main.dart 页面如下

 @override
Widget build(BuildContext context) {
return MaterialApp.router(
  
  debugShowCheckedModeBanner: false,
  title: 'AppName',
  theme: ThemeData(
      primaryColor: MyAppTheme.primaryColor,
      accentColor:MyAppTheme.accentColor
  ),
routeInformationParser: VxInformationParser(),
routerDelegate: VxNavigator(routes: {

  "/": (_,__)=> MaterialPage(child:SplashScreen()),
  "/login": (_,__)=> MaterialPage(child:SignUp()),
  "/home": (_,__)=> MaterialPage(child:Home(selectedIndex: 0)),
  "/ItemDetails": (uri, _){
    final pId=int.parse(uri.queryParameters["pId"]);     
    return MaterialPage(
      child:ItemDetailsFromAdd(
        pId:pId.toString() ,
      
    ));
  },
  
}),
)

我的初始路径是启动画面,在检查身份验证后重定向到登录页面或主页。当我点击一个特定的项目时,创建一个 url "http://localhost:60117/ItemDetails?pId=1" 这个。但是当我尝试从另一个选项卡启动此 url 时,它首先加载产品详细信息页面并突然重定向到我的初始页面闪屏。

我试图将“/”初始路由从“/”更改为“/splash”,并更改了我的“<base href="/splash/">”,但最初出现页面未找到错误。

如何以正确的方式使用“http://localhost:60117/ItemDetails?pId=1”URL 直接访问我的产品详情页面。

onGenerateRoute: (settings) {
      List<String> pathComponents = settings.name.split('/');
      if (pathComponents[1] == 'invoice') {
        return MaterialPageRoute(
          builder: (context) {
            return Invoice(arguments: pathComponents.last);
          },
        );
      } else
        return MaterialPageRoute(
          builder: (context) {
            return LandingPage();
          },
        );
      ;
    },

试试这个方法

尝试在 URL 中添加话题标签 #:

http://localhost:60117/#/ItemDetails?pId=1

如果您是 运行 渐进式网络应用程序,这是分享它的唯一方式。 /#/ 左边是告诉浏览器从哪里获取应用程序,后面是路由逻辑。如果您尝试删除 /#/,该应用程序将无法正常运行并恢复为默认路由。

经过长时间的测试我找到了答案,这里我的初始路由('/')重定向到'SplashScreen'。因此,当我尝试使用 URL 访问特定项目时,首先会出现 SplashScreen,然后我根据用户身份验证编码重定向到主页或登录。因此,当我使用 url 访问特定项目时,它会重定向到我的 login/home。解决方案是我更改了到主页的初始路径。