如何在颤振中使用 if else

时间:2021-04-20 11:31:16

标签: flutter dart label

我是 flutter 的新手,我不知道如何使用 if-else 语句更改标签的颜色。基本上,这个语句给了我错误。

selectedItemColor:_selectedIndex == 0 ? Colors.cyan: Colors.grey,
    **_selectedIndex == 1 ? Colors.cyan: Colors.grey,**

我在底部导航栏中使用这个,如果我使用标题,flutter 不接受。

@override
  Widget build(BuildContext context) {
    return Scaffold(
      bottomNavigationBar: BottomNavigationBar( onTap: _onItemTapped, items: [
        BottomNavigationBarItem(icon: Icon(Icons.home, color: _selectedIndex == 0 ? Colors.cyan: Colors.grey,), label: 'Home'),
        BottomNavigationBarItem(icon: Icon(Icons.ballot, color: _selectedIndex == 1 ? Colors.cyan: Colors.grey,), label: 'Services'),
      ],
      selectedItemColor:_selectedIndex == 0 ? Colors.cyan: Colors.grey,
        _selectedIndex == 1 ? Colors.cyan: Colors.grey,
      ),
      appBar: AppBar(
        title: Text('Home',
          style: TextStyle(
            fontFamily: 'Noto Sans TC',
          ),
        ),
        centerTitle: false,
        backgroundColor: HexColor('#09B9B6'),
      ),
      body: PageView(
        controller: _pageController,
        children: _Screens,
        onPageChanged: _onPageChanged,
        physics: NeverScrollableScrollPhysics(),
      ),
    );
  }

2 个答案:

答案 0 :(得分:0)

使用 selectedItemColor:_selectedIndex == 0 ? Colors.cyan: Colors.grey,,您告诉 Dart 将值 Colors.cyanColors.grey 分配给命名参数 selectedItemColor。但是 _selectedIndex == 1 ? Colors.cyan: Colors.grey 放错了位置。

你可能想要的是这样的:

@override
  Widget build(BuildContext context) {
    return Scaffold(
      bottomNavigationBar: BottomNavigationBar( onTap: _onItemTapped, items: [
        BottomNavigationBarItem(icon: Icon(Icons.home, color: _selectedIndex == 0 ? Colors.cyan: Colors.grey,), label: 'Home'),
        BottomNavigationBarItem(icon: Icon(Icons.ballot, color: _selectedIndex == 1 ? Colors.cyan: Colors.grey,), label: 'Services'),
      ],
      selectedItemColor:(_selectedIndex == 0||_selectedIndex == 1) ? Colors.cyan: Colors.grey,
      ),
      appBar: AppBar(
        title: Text('Home',
          style: TextStyle(
            fontFamily: 'Noto Sans TC',
          ),
        ),
        centerTitle: false,
        backgroundColor: HexColor('#09B9B6'),
      ),
      body: PageView(
        controller: _pageController,
        children: _Screens,
        onPageChanged: _onPageChanged,
        physics: NeverScrollableScrollPhysics(),
      ),
    );
  }

当 _selectedIndex 为 0 或 1 时,这将使导航栏变为青色。

答案 1 :(得分:0)

它被称为三元运算符 - ? :。根据您当前的逻辑,您应该使用以下代码:

selectedItemColor: _selectedIndex == 0 || _selectedIndex == 1 ? Colors.cyan : Colors.grey

但我看不出有任何理由使用此逻辑来设置 selectedItemColorBottomNavigationBar。它将自动设置为所选项目,因此您可以使用 selectedItemColor: Colors.cyan 代替。