我是个新手.
我有一个使用BottomNavBar的主页。我正试图在第一页上插入第二页,并掩盖BottomNavBar。通过使用以下命令,我能够获得所需的功能:
Navigator.of(context, rootNavigator: true).push(
MaterialPageRoute(
builder: (context) => const SecondPage(),
),
);
然而,我们正试图在整个应用程序中使用命名路线。我可以使用以下方法成功地导航到第二个页面:
Navigator.pushNamed(context, SecondPage.routeName);
这是可行的,但仍然显示BottomNavBar。
当我使用:
Navigator.of(context, rootNavigator: false)
.pushNamed(SecondPage.routeName);
但是,当我使用:
Navigator.of(context, rootNavigator: true)
.pushNamed(SecondPage.routeName);
我得到以下例外:
已发生异常。FlutterError (无法在_WidgetsAppState中找到路由RouteSettings("/comments",null)的生成器。确保您的根应用程序小部件提供了生成此路由的方法。按以下顺序搜索用于路由的生成器:
对于"/“路由,"home”属性(如果非空的话)是used.
有关更多上下文,我们将在onGenerateRoute
中使用Navigator
onGenerateRoute: (settings) {
switch (settings.name) {
...
case SecondPage.routeName:
return MaterialPageRoute(
builder: (_) => const SecondPage(),
);
我不明白为什么其他的案子会像预期的那样运作,而不是我所需要的。有什么想法吗?
发布于 2022-09-22 17:19:16
擦伤那个..。我留着这个以防这个能帮到别人。
我通过弄清楚这件事学到了很多东西。在这里,使用rootNavigator不是正确的方法。当使用指定的路由时,如果是rootNavigator: true
,导航层次结构就不会像预期的那样工作。
正确的解决办法是处理底部导航的状态。这条线帮了一吨人:https://www.reddit.com/r/flutterhelp/comments/rxp44b/full_screen_page_inside_nested_navigation_with_a/
https://stackoverflow.com/questions/73810228
复制相似问题