【问题标题】:Cannot make bottom navigation bar and routing work together in flutter无法使底部导航栏和路由在颤动中一起工作
【发布时间】:2020-08-19 22:39:40
【问题描述】:

我是 Flutter 新手,无法从底部导航栏导航到新页面

我有主应用程序

    class MyApp extends StatelessWidget {
          @override
           Widget build(BuildContext context) {
            SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
              statusBarColor: Colors.transparent,
            ));
            return MaterialApp(
              title: 'Flutter Demo',
              theme: ThemeData(primarySwatch: Colors.blue),
              builder: (BuildContext buildContext, Widget widtget) => Scaffold(
                body: RootNavigator(),
                bottomNavigationBar: BottomNavigation(),
              ),
            );
          }
        }

和根导航器

    class RootNavigator extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Navigator(
          initialRoute: '/',
          onGenerateRoute: (RouteSettings settings) {
            // final args = settings.arguments;

            return MaterialPageRoute(
                settings: settings,
                builder: (BuildContext context) {
                  switch (settings.name) {
                    case '/':
                      return Page1();
                    case '/page2':
                      return Page2();
                    case '/page3':
                      return Page3();
                    default:
                      return RouteErrorPage();
                  }
                });
              },
            );
          }
    }

和底部导航器

class BottomNavigation extends StatefulWidget {
  @override
  BottomNavigationState createState() {
    return new BottomNavigationState();
  }
}

class BottomNavigationState extends State<BottomNavigation> {
  int currIndex = 0;

  onTap(int index) {
    setState(() => currIndex = index);
    switch (index) {
      case 0:
        Navigator.pushNamed(context, '/');
        break;
      case 1:
        Navigator.pushNamed(context, '/page2');
        break;
      case 2:
        Navigator.pushNamed(context, 'page3');
        break;
      default:
        Navigator.push(
            context, MaterialPageRoute(builder: (_) => RouteErrorPage()));
    }
  }
   ....
  // added app bar items
}

选项卡正在切换,但路线没有。它停留在主页上。 我觉得有些东西有上下文,但不知道如何解决。 有人可以帮忙吗? 谢谢

附言如果我将底部导航栏分别移动到每个页面,除了选定的选项卡(由于状态)之外,一切正常,并且我还想保留一个共享应用栏

【问题讨论】:

  • 所以当用户点击底部栏中的图标时您需要滑动页面?如果是,请查看PageViewyoutube.com/watch?v=J1gE9xvph-A
  • 嗯,是的,我想在 bootm 导航栏项目单击时导航到另一个页面。如果我理解正确 PageView 它属于一个功能(帐户有不同的选项卡)。但是底部选项卡是不同的功能,例如帐户、搜索等。我认为这里的路由更合适(也许我弄错了,不明白何时使用 pageView 以及何时使用路由)?但是我的问题仍然存在 - 为什么当我在 mainApp 中有底部导航时导航不起作用,但当我在单独的页面中有底部导航栏时它确实起作用。
  • 您找到解决方案了吗?所以你能把它贴在答案里吗

标签: flutter routes navigation


【解决方案1】:

答案是 - @LoVe 评论是正确的。 这就是颤振的工作原理。 如果您有底部导航,则必须在页面上滑动。 重定向意味着移动到全新的页面,您必须从头开始定义脚手架。 如果您想共享 AppBar - 使其可重复使用的小部件

【讨论】:

    猜你喜欢
    • 2019-02-20
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 2019-06-19
    相关资源
    最近更新 更多