Flutter -是否可以取消选择bottomNavigationBar上的所有项目?

wxclj1h5  于 2022-12-14  发布在  Flutter
关注(0)|答案(3)|浏览(170)

Flutter项目。我有一个bottomNavigationBar,style=fixed。它有4个项目,工作正常。但是,我需要一种方法来取消选择此栏上的所有项目。似乎它必须总是有正好1个项目被选中,这通常是有意义的,但对于我的项目,有一些示例需要有0个项目被选中。
我可以通过将图标和文本的颜色更改为与非活动项相同的颜色来伪造这一点,这看起来很不活动,除了图标和文本略大,因为它实际上仍然处于选中状态。
有没有办法真正取消选中bottomNavigationBar中的所有项,而不是让它们看起来像是未选中的?

mo49yndu

mo49yndu1#

不幸的是,没有办法将所有底部导航栏项都设置为未选中。一次应该将其中一项设置为选中。
正如您所建议的,唯一的解决方法是通过设置BottomNavigationBarselectedItemColor等样式属性,使所有项看起来都像“未选中”。

6psbrbz9

6psbrbz92#

您可以使用类似于以下内容的内容:

bottomNavigationBar: BottomNavigationBar(
        items: getBottomNavigationBarItems(),
        currentIndex: _currentPage < 4 ? _currentPage : 0,
        showSelectedLabels:_currentPage < 4,
        selectedItemColor: Colors.amber[800],
        onTap: _onItemTapped,
      ),
6tdlim6h

6tdlim6h3#

可惜,这是不可能的但有一个窍门:

int _selectedIndex = -1;// Unselect any item

....

bottomNavigationBar: BottomNavigationBar(
  type: BottomNavigationBarType.fixed,
  // This is all you need!
  items: const <BottomNavigationBarItem>[
    BottomNavigationBarItem(
      icon: Icon(Icons.support),
      label: 'support',
    ),
    BottomNavigationBarItem(
      icon: Icon(Icons.business),
      label: 'business',
    ),
    BottomNavigationBarItem(
      icon: Icon(Icons.text_snippet_sharp),
      label: 'Report',
    ),
    BottomNavigationBarItem(
      icon: Icon(Icons.account_circle_outlined),
      label: 'Account',
    ),
  ],
  currentIndex: selectedIndex == -1 ? 0: selectedIndex,
  selectedItemColor: selectedIndex == -1 ? Colors.grey[600] : Colors.amber[800],
  unselectedItemColor: Colors.grey[600],
  onTap: onTap,
);

相关问题