Flutter BottomNavigationBar不能使用三个以上的项目

Mic*_*ael 7 dart flutter

我在Flutter(0.6)中的BottomNavigationBar遇到问题。一旦我添加了三个以上的BottomNavigationBarItems作为子项,栏中的按钮就会带有白色图标,并且它们被弄乱了。当我只使用三个或更少的物品时,一切都很好。

这是我使用的小部件代码,它打破了标准:

bottomNavigationBar: BottomNavigationBar(
          currentIndex: 0,
          iconSize: 20.0,
          items: [
          BottomNavigationBarItem(
              title: Text('Home'), icon: Icon(Icons.accessibility)),
          BottomNavigationBarItem(
              title: Text('Preise'), icon: Icon(Icons.account_box)),
          BottomNavigationBarItem(
              title: Text('Test'), icon: Icon(Icons.adb)),
          BottomNavigationBarItem(
              title: Text('Mehr'), icon: Icon(Icons.menu))
        ])
Run Code Online (Sandbox Code Playgroud)

有人知道这里有什么问题吗?

预先感谢您的任何提示,迈克尔

Gün*_*uer 14

来自https://github.com/flutter/flutter/issues/13642#issuecomment-371875044

如果提供了3个以上的BottomNavigationBar项目,则类型(如果未指定)将BottomNavigationBarType.shifting根据 https://docs.flutter.io/flutter/material/BottomNavigationBar/BottomNavigationBar.html进行更改。这些信息应在课程文档中突出显示。很容易忽略它在哪里(我忽略了它)。

当BottomNavigationBar的类型为 BottomNavigationBarType.shiftingitem时,将通过DefaultTextStyle和IconTheme将文本和图标显示为白色。假定它们BottomNavigationBarItem.backgroundColor将被指定为对比色。这显然令人困惑。

shifting底部导航栏类型的总体思路是,每个项目都将具有不同的背景色(与白色形成对比),因为当选中该项目时,该颜色将成为整个导航栏的颜色。

BottomNavigationBar和NavigationBarItem的文档需要改进。

  • 设置“showUnselectedLabels: true”,会将 BottomNavigationBar.shifting 的行为恢复为 BottomNavigationBar.fixed 的默认行为。基本上,您可能想做的事情。 (2认同)

小智 14

添加类型:BottomNavigationBarType.fixed在BottomNavigationBar上

bottomNavigationBar: BottomNavigationBar(
      type: BottomNavigationBarType.fixed,
      items: <BottomNavigationBarItem>[
      BottomNavigationBarItem(icon: Icon(Icons.home), title: Text('A')),
      BottomNavigationBarItem(icon: Icon(Icons.access_alarm), title: Text('B')),
      BottomNavigationBarItem(icon: Icon(Icons.business), title: Text('C')),
      BottomNavigationBarItem(icon: Icon(Icons.school), title: Text('D')),
    ],
Run Code Online (Sandbox Code Playgroud)