我正在使用底部导航器创建一个应用程序。
我使用了一个
ShellRoute
,但我们的要求是在屏幕上隐藏底部导航器。
例如:
主页面可以有底部导航器,当我转到另一个屏幕(如用户个人资料页面)时,
我必须隐藏底部导航器,但我使用ShellRoute
和同一ShellRoute
中的子路由,它不会隐藏底部导航器。ShellRoute(
navigatorKey: _shellNavigatorKey,
builder: (context, state, child) {
return MainScreen(child: child);
},
routes: [
GoRoute(
path: '/$dashboardRouteName',
name: dashboardRouteName,
pageBuilder: (context, state) => CustomPageRouteBuilder.route(
key: UniqueKey(),
child: const DashboardScreen(),
),
routes: [
GoRoute(
path: leaveRequestRouteName,
name: '$dashboardRouteName/$leaveRequestRouteName',
pageBuilder: (context, state) => CustomPageRouteBuilder.route(
key: state.pageKey,
child: const LeaveRequestScreen(),
),
),
GoRoute(
path: switchHolidayRouteName,
name: '$dashboardRouteName/$switchHolidayRouteName',
pageBuilder: (context, state) => CustomPageRouteBuilder.route(
key: state.pageKey,
child: const SwitchHolidayScreen(),
),
),
],
),
接着,我将子路由分离成以下通用路由:
ShellRoute(
navigatorKey: _shellNavigatorKey,
builder: (context, state, child) {
return MainScreen(child: child);
},
routes: [
GoRoute(
path: '/$dashboardRouteName',
name: dashboardRouteName,
pageBuilder: (context, state) => CustomPageRouteBuilder.route(
key: UniqueKey(),
child: const DashboardScreen(),
),
),
....
GoRoute(
path: '/$switchHolidayRouteName',
name: switchHolidayRouteName,
pageBuilder: (context, state) => CustomPageRouteBuilder.route(
key: state.pageKey,
child: const SwitchHolidayScreen(),
),
),
GoRoute(
path: '/$leaveRequestRouteName',
name: leaveRequestRouteName,
pageBuilder: (context, state) => CustomPageRouteBuilder.route(
key: state.pageKey,
child: const LeaveRequestScreen(),
),
),
我使用 context.go()
,它可以工作,但无法使用 context.pop()
返回到上一个屏幕。
有人有任何想法吗?