我使用auto_routes包设置了一个嵌套的路由,如下所示:
replaceInRouteName: 'Page,Route',
routes: [
AutoRoute(
path: '/',
page: HomePage,
children: [
AutoRoute(
path: 'dashboard',
name: 'DashboardRouter',
page: EmptyRouterPage,
children: [
AutoRoute(
path: '',
page: DashboardPage,
),
AutoRoute(
path: ':regional',
page: TopPlayersPage,
),
AutoRoute(page: EditProfilePage),
// AutoRoute(page: ProfilePage),
],
),
AutoRoute(
path: 'profile',
name: 'ProfileRouter',
page: ProfilePage,
),
AutoRoute(
path: 'search',
name: 'SearchRouter',
page: EmptyRouterPage,
children: [
AutoRoute(
path: '',
page: SearchOverviewPage,
),
AutoRoute(
path: ':searchType',
page: SearchPage,
)
],
),
AutoRoute(
path: 'add_post',
name: 'AddPostRouter',
page: AddPostPage,
),
AutoRoute(
path: 'notifications',
name: 'NotificationsRouter',
page: NotificationsPage,
),
AutoRoute(
path: 'edit_profile',
name: 'EditProfileRouter',
page: EditProfilePage,
)
],
),
],
...
);
)
上面的大多数部分都用于auto_routes附带的AutoTabsScaffold中,以创建bottomNavigationBar。
return AutoTabsScaffold(
backgroundColor: LIGHT_MODE_WHITE,
routes: const [
DashboardRouter(),
SearchRouter(),
AddPostRouter(),
NotificationsRouter(),
EditProfileRouter(),
],
现在我想从 Jmeter 板页面中包含的小部件导航到我的ProfilePage,它没有在bottomNavigationBar中使用。我尝试使用以下代码完成此操作,但没有任何效果(参数"playerId"在我在ProfileRouter中使用的类中被标记为必需):
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
context.navigateTo(
ProfileRouter(
playerId: 'Test',
),
);
},
...
}
当我把ProfileRouter换成我的bottomNavigationBar中使用的路由器时,它工作正常。有什么办法可以解决这个问题吗?当我把ProfileRouter集成到我的路由设置的 Jmeter 板部分时,我可以使用router.push()访问它,但是因为我也想从代码的其他部分访问这个页面,就我所知,这不是一个合适的方法。
谢谢大家!
1条答案
按热度按时间zbdgwd5y1#
找到问题所在了
ProfilePage
路线必须向上移动一级。