gpt4 book ai didi

Flutter web 在路由更改时保留 URL 查询字符串参数。 Flutter 白标

转载 作者:行者123 更新时间:2023-12-05 04:25:27 46 4
gpt4 key购买 nike

我正在构建的 Flutter Web 应用程序具有基于 URL 查询字符串 /#?brd=BrandName 的白标签功能......根据要求,白标签必须基于作为域的 url 参数 brd 对于所有品牌都是相同的。

目前它工作正常并加载正确的信息,但是如果用户导航一次并刷新页面,它会返回到主要品牌,因为查询参数 brd 不存在。

Flutter 有没有办法在每次路由更改时保留查询参数?

最佳答案

试试这个:

  1. 从 MaterialApp 中删除您的 initialRoute 和路由(如果您使用 Material)。

  2. 仅使用 onGenerateRoute 例如:

onGenerateRoute: (settings) {
print(settings);

if (settings.name!.contains('?brd=BrandName') == false) {
return MaterialPageRoute(
builder: (context) {
return const HomePage();
},
settings: RouteSettings(
name: '?brd=BrandName', arguments: settings.arguments),
);
}

if (settings.name!.contains(DetailsPage.routeName)) {
final List<String> uri = settings.name!.split('/');

if (uri.length == 3) {
return MaterialPageRoute(
builder: (context) {
return DetailsPage(pageId: uri[2]);
},
settings: settings,
);
}
}

return MaterialPageRoute(
builder: (context) {
return const HomePage();
},
settings: settings,
);
},

在我的示例中,我有两个页面:

主页 -/#?brd=BrandName

详细信息 -/#?brd=BrandName/details/2

按钮示例:

ElevatedButton(
onPressed: () {
navigatorKey.currentState!
.pushNamed("?brd=BrandName/details/2");
},
child: const Text('Go to Page 1'),
)

附言当您更改路由器中的某些内容时,最好完全重新启动您的应用程序。

关于Flutter web 在路由更改时保留 URL 查询字符串参数。 Flutter 白标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73272694/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com