在我的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() ,
));
},
}),
)我的初始路由是闪屏,在检查身份验证后,它会重定向到登录页面或主页。当我点击一个特定的项目时,会创建一个网址"http://localhost:60117/ItemDetails?pId=1“this。但当我尝试从另一个选项卡启动这个url时,它首先加载产品详细信息页面,然后突然重定向到我的初始页面闪屏。
我尝试将"/“初始路由从"/”更改为"/splash“,并更改了我的"<base href="/splash/">”,但它最初给出了一个页面未找到错误。
如何以正确的方式使用此"http://localhost:60117/ItemDetails?pId=1“网址直接访问我的产品详细信息页面。
发布于 2021-08-26 16:44:50
经过长时间的测试,我找到了答案,这里我的初始路径('/')重定向到‘’SplashScreen‘。因此,当我首先尝试使用URL访问特定项目时,它会转到SplashScreen,在那里我编码为根据用户身份验证重定向到主页或登录。因此,当我使用url访问特定项目时,它会重定向到我的登录/主页。解决方案是我更改了到主页的初始路由。
发布于 2021-08-05 17:47:30
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();
},
);
;
},试试这条路
发布于 2021-08-05 17:52:16
尝试将散列标签#添加到URL:
http://localhost:60117/#/ItemDetails?pId=1如果你正在运行一个渐进式的web应用,这是分享它的唯一方式。/#/的左边告诉浏览器从哪里获取应用程序,它后面的是路由器逻辑。如果您尝试删除/#/,应用程序将不会正常运行,并恢复到默认路由。
https://stackoverflow.com/questions/68671202
复制相似问题