你如何强制 Flutter BottomNavigationBar 在所有 TABS 上具有相同的宽度?
Do you how to force Flutter BottomNavigationBar to have same width on all the TABS?
这是我的代码,但我还没有找到如何强制所有项目在网络上具有相同的宽度。主要问题是,在 flutter 中,这个小部件分配宽度并为所选选项卡分配更大数量的 space,但出于设计目的我需要强制所有项目具有相同数量的 space。
额外的怀疑,我选择的选项卡没有改变它的颜色,即使它被配置为这样做
BottomNavigationBar(
showUnselectedLabels: true,
backgroundColor: Color(0xff22273d).withOpacity(.4),
selectedItemColor: Color(0xffffd156),
selectedIconTheme: IconThemeData(
color: Color(0xffffd156),
),
selectedLabelStyle: GoogleFonts.openSans(color: Color(0xffffd156)),
currentIndex: _currentIndex,
onTap: (int index) {
setState(() {
_currentIndex = index;
print("Current index"+_currentIndex.toString());
});
},
items: [
BottomNavigationBarItem(
icon: Icon(Icons.home, color: Color(0xff99ffffff),),
backgroundColor: Color(0xff22273d).withOpacity(.9),
title: Text("Home", style: GoogleFonts.openSans(fontSize: 10, color:Color(0xff99ffffff)),)
),
BottomNavigationBarItem(
icon: ImageIcon(AssetImage("images/soccer_24_px.png"), color: Colors.white,),
backgroundColor: Color(0xff22273d).withOpacity(.9),
title: Text("La porra", style: GoogleFonts.openSans(fontSize: 10, color:Color(0xff99ffffff)),)
),
BottomNavigationBarItem(
icon: Icon(Icons.calendar_today, color: Color(0xff99ffffff),),
backgroundColor: Color(0xff22273d).withOpacity(.9),
title: Text("Calendario", style: GoogleFonts.openSans(fontSize: 10, color:Color(0xff99ffffff)),)
),
BottomNavigationBarItem(
icon: ImageIcon(AssetImage("images/classification_24_px.png"), color: Color(0xff99ffffff),),
backgroundColor: Color(0xff22273d).withOpacity(.9),
title: Text("Clasificacion", style: GoogleFonts.openSans(fontSize: 10, color:Colors.white),)
),
BottomNavigationBarItem(
icon: Icon(Icons.more_horiz, color: Color(0xff99ffffff),),
backgroundColor: Color(0xff22273d).withOpacity(.9),
title: Text("Más", style: GoogleFonts.openSans(fontSize: 10, color:Color(0xff99ffffff)),)
),
]
)```
回答宽度。尝试在 BottomNavigationBar
中添加
type: BottomNavigationBarType.fixed,
这应该使所有宽度都相同...虽然我没有在网络上尝试过,但请告诉我它是否有效。
对您额外疑问的回答是,您已经用 Icon 和 AssetImages 颜色覆盖了选定的颜色。删除位于所有 BottomNavigationBarItem 中的图标和资产图像中的所有颜色 属性 并设置
unselectedItemColor: Color(0xff99ffffff),
在 BottomNavigationBar 中,它应该可以工作。还要确保你的 _currentIndex 位于状态 class 之上,像这样
...
int _currentIndex = 0;
class _YourScreenState extends State<YourScreen> {
@override
...
最后认为,当 BottomNavigationBarType 设置为固定时,BottomNavigationBarItem 中的背景颜色不起作用,因此您也可以将它们全部删除
输出
这是我的代码,但我还没有找到如何强制所有项目在网络上具有相同的宽度。主要问题是,在 flutter 中,这个小部件分配宽度并为所选选项卡分配更大数量的 space,但出于设计目的我需要强制所有项目具有相同数量的 space。
额外的怀疑,我选择的选项卡没有改变它的颜色,即使它被配置为这样做
BottomNavigationBar(
showUnselectedLabels: true,
backgroundColor: Color(0xff22273d).withOpacity(.4),
selectedItemColor: Color(0xffffd156),
selectedIconTheme: IconThemeData(
color: Color(0xffffd156),
),
selectedLabelStyle: GoogleFonts.openSans(color: Color(0xffffd156)),
currentIndex: _currentIndex,
onTap: (int index) {
setState(() {
_currentIndex = index;
print("Current index"+_currentIndex.toString());
});
},
items: [
BottomNavigationBarItem(
icon: Icon(Icons.home, color: Color(0xff99ffffff),),
backgroundColor: Color(0xff22273d).withOpacity(.9),
title: Text("Home", style: GoogleFonts.openSans(fontSize: 10, color:Color(0xff99ffffff)),)
),
BottomNavigationBarItem(
icon: ImageIcon(AssetImage("images/soccer_24_px.png"), color: Colors.white,),
backgroundColor: Color(0xff22273d).withOpacity(.9),
title: Text("La porra", style: GoogleFonts.openSans(fontSize: 10, color:Color(0xff99ffffff)),)
),
BottomNavigationBarItem(
icon: Icon(Icons.calendar_today, color: Color(0xff99ffffff),),
backgroundColor: Color(0xff22273d).withOpacity(.9),
title: Text("Calendario", style: GoogleFonts.openSans(fontSize: 10, color:Color(0xff99ffffff)),)
),
BottomNavigationBarItem(
icon: ImageIcon(AssetImage("images/classification_24_px.png"), color: Color(0xff99ffffff),),
backgroundColor: Color(0xff22273d).withOpacity(.9),
title: Text("Clasificacion", style: GoogleFonts.openSans(fontSize: 10, color:Colors.white),)
),
BottomNavigationBarItem(
icon: Icon(Icons.more_horiz, color: Color(0xff99ffffff),),
backgroundColor: Color(0xff22273d).withOpacity(.9),
title: Text("Más", style: GoogleFonts.openSans(fontSize: 10, color:Color(0xff99ffffff)),)
),
]
)```
回答宽度。尝试在 BottomNavigationBar
中添加type: BottomNavigationBarType.fixed,
这应该使所有宽度都相同...虽然我没有在网络上尝试过,但请告诉我它是否有效。
对您额外疑问的回答是,您已经用 Icon 和 AssetImages 颜色覆盖了选定的颜色。删除位于所有 BottomNavigationBarItem 中的图标和资产图像中的所有颜色 属性 并设置
unselectedItemColor: Color(0xff99ffffff),
在 BottomNavigationBar 中,它应该可以工作。还要确保你的 _currentIndex 位于状态 class 之上,像这样
...
int _currentIndex = 0;
class _YourScreenState extends State<YourScreen> {
@override
...
最后认为,当 BottomNavigationBarType 设置为固定时,BottomNavigationBarItem 中的背景颜色不起作用,因此您也可以将它们全部删除
输出