如何在 flutter 中设置 BottomNavigationBarItem 中的 BackGroundColor?

How to set BackGroundColor in BottomNavigationBarItem in flutter?

[在此处输入图片描述][1] 这就是我的代码 如何在 flutter 中仅添加选定的 BottomNavigationBarItem 背景颜色和大小。我在下面添加了我的模型屏幕图像..任何人都可以帮助我

bottomNavigationBar: BottomNavigationBar(
          type: BottomNavigationBarType.fixed,

          backgroundColor: Color(0xffffcc2a),
          showUnselectedLabels: true,
          currentIndex: _currentIndex,
          elevation: 20.0,
          onTap: callPage,

          selectedItemColor: Color(0xff3666ad),
          unselectedItemColor: Color(0xff3666ad),

          // this will be set when a new tab is tapped
          items: [
            BottomNavigationBarItem(
              icon: new Icon(
                Icons.ballot,
                color: Color(0xff3666ad),
              ),
              label: 'Insurance',
            ),
            BottomNavigationBarItem(
              icon: new FaIcon(
                FontAwesomeIcons.car,
                color: Color(0xff3666ad),
              ),
              label: 'Motor',
            ),
            BottomNavigationBarItem(
              icon: new Icon(
                Icons.medical_services,
                color: Color(0xff3666ad),
              ),
              label: ('Health'),
            ),
            BottomNavigationBarItem(
              // backgroundColor: Color(0xffffcc2a),
              icon: new Icon(
                Icons.flight,
                color: Color(0xff3666ad),
              ),
              label: ('Travel'),
            ),
            BottomNavigationBarItem(
              // backgroundColor: Color(0xffffcc2a),
              icon: new Icon(
                Icons.local_fire_department,
                color: Color(0xff3666ad),
              ),
              label: ('Fire'),
            ),
            BottomNavigationBarItem(
              // backgroundColor: Color(0xffffcc2a),
              icon: FaIcon(
                FontAwesomeIcons.layerGroup,
                color: Color(0xff3666ad),
              ),
              label: ('Misc'),
            )
          ],
        ),

我在这种情况下使用自定义 bottomNavigationBar,您可以随意选择风格和方式。


class _TestWidgetState extends State<TestWidget> {
  int _currentIndex = 0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      bottomNavigationBar: Container(
        color: Colors.green, // main background
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: [
            NavItem(
              icon: const Icon(Icons.ac_unit),
              isSelected: 0 == _currentIndex,
              label: "Item 1",
              onTap: () {
                setState(() {
                  _currentIndex = 0;
                });
              },
            ),
            NavItem(
              icon: Icon(Icons.umbrella),
              isSelected: 1 == _currentIndex,
              label: "Item 2",
              onTap: () {
                setState(() {
                  _currentIndex = 1;
                });
              },
            ),
          ],
        ),
      ),
    );
  }
}

class NavItem extends StatelessWidget {
  const NavItem({
    Key? key,
    required this.icon,
    required this.isSelected,
    required this.onTap,
    required this.label,
  }) : super(key: key);

  final bool isSelected;
  final VoidCallback onTap;
  final String label;
  final Widget icon; // you may use different widget

  @override
  Widget build(BuildContext context) {
    return Expanded(
      child: (InkWell(
        onTap: onTap,
        child: Container(
          color: isSelected
              ? Colors.pink
              : Colors.amber, //selected background pink
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              icon,
              Text("$label"),
            ],
          ),
        ),
      )),
    );
  }
}