【问题标题】:How to structure pages with BottomNavigationBar in Flutter如何在 Flutter 中使用 BottomNavigationBar 构建页面
【发布时间】:2019-05-18 12:02:14
【问题描述】:

我不确定在使用 BottomNavBar 时应该如何构建我的页面。 现在,我使用 MainScreen,其中包含 ScaffoldBottomNavBar

MainScreen 小部件包含一个包含不同页面的列表。这是使用底部导航栏的推荐方式吗?我知道我也可以使用 Navigator 在屏幕之间导航,但是它会为每个页面启动一个不同的窗口,这不是您在使用 bottomNavBar 时所期望的。我现在实现它的方式工作正常,但我怎么能在其中一个屏幕中使用FloatingActionButton?你总是需要一个脚手架吗?

  List<Widget> screens = [
    Screen1(),
    Screen2(),
    Screen3()
  ];

Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(Constants.APP_NAME),
      ),
      body: screens[_currentIndex],
      bottomNavigationBar: CustomBottomNav(onBottomNavPressed: onBottomNavPressed,),
    );
  }

【问题讨论】:

  • 你想在其中一个屏幕上显示 fab,对吧?

标签: dart flutter


【解决方案1】:

根据官方BottomNavigationBardocumentation,提供小部件作为&lt;Widget&gt;[ ]是推荐的提供小部件的方式。对于你问题的第二部分,是的。 FloatingActionButton 只能包含在 Scaffold 中,因此您应该在需要使用 FloatingActionButton 的小部件中添加一个。

【讨论】:

  • 那么在其中一个需要 FAB 的屏幕中,我应该返回一个带有 FAB 的新 Scaffold 吗?
  • 是的,你应该这样做。
  • 但是我只是在脚手架内得到了脚手架。
  • 是的,但这是获得所需内容的唯一方法。这个 github issue 正在讨论你同样的问题,他们认为这是正常的。甚至 Flutter 贡献者修改了 Scaffold 以使嵌套更容易 github.com/flutter/flutter/issues/7036
  • @DreamsInHD 实际上不仅如此,还有另一种解决方案,无需在脚手架之间过渡,只有一个脚手架具有多个主体。
猜你喜欢
  • 2022-07-19
  • 2021-07-27
  • 2021-02-27
  • 2020-06-27
  • 2020-12-05
  • 2020-06-30
  • 2020-10-11
  • 2020-09-18
  • 2021-04-06
相关资源
最近更新 更多