首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >'rootNavigator: true‘在使用pushNamed时会导致异常

'rootNavigator: true‘在使用pushNamed时会导致异常
EN

Stack Overflow用户
提问于 2022-09-22 06:29:25
回答 1查看 56关注 0票数 0

我是个新手.

我有一个使用BottomNavBar的主页。我正试图在第一页上插入第二页,并掩盖BottomNavBar。通过使用以下命令,我能够获得所需的功能:

代码语言:javascript
运行
复制
Navigator.of(context, rootNavigator: true).push(
  MaterialPageRoute(
    builder: (context) => const SecondPage(),
  ),
);

然而,我们正试图在整个应用程序中使用命名路线。我可以使用以下方法成功地导航到第二个页面:

代码语言:javascript
运行
复制
Navigator.pushNamed(context, SecondPage.routeName);

这是可行的,但仍然显示BottomNavBar。

当我使用:

代码语言:javascript
运行
复制
Navigator.of(context, rootNavigator: false)
        .pushNamed(SecondPage.routeName);

但是,当我使用:

代码语言:javascript
运行
复制
Navigator.of(context, rootNavigator: true)
        .pushNamed(SecondPage.routeName);

我得到以下例外:

已发生异常。FlutterError (无法在_WidgetsAppState中找到路由RouteSettings("/comments",null)的生成器。确保您的根应用程序小部件提供了生成此路由的方法。按以下顺序搜索用于路由的生成器:

对于"/“路由,"home”属性(如果非空的话)是used.

  • Otherwise,,如果它有route.

  • Otherwise,onGenerateRoute的条目,则使用“”表。如果调用了其他所有失败的"routes".
  1. Finally,则应该为"home“和onUnknownRoute未处理的任何有效路由返回一个非空值。不幸的是,onUnknownRoute没有被设置。)

有关更多上下文,我们将在onGenerateRoute中使用Navigator

代码语言:javascript
运行
复制
onGenerateRoute: (settings) {
  switch (settings.name) {
    ...
    case SecondPage.routeName:
      return MaterialPageRoute(
        builder: (_) => const SecondPage(),
      );

我不明白为什么其他的案子会像预期的那样运作,而不是我所需要的。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 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/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73810228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档