Flutter 有没有办法更新BottomNavigationBarItems?
我是一名新手,一直在尝试使用Flutter 有没有办法更新BottomNavigationBarItems?,flutter,navigationbar,Flutter,Navigationbar,我是一名新手,一直在尝试使用BottomNavigationBar。问题是,我按照我的要求制作了这个条,但是当开关设置为true但无法找到解决方法时,我需要它来更新它的项目 我有两个列表,其中有两个不同的导航栏项,我将它们分配给第三个列表,该列表包含活动列表,具体取决于开关状态。此变量用于设置我的navbarItem中的项目,但setState()似乎不会重新构建navBar 有没有办法更新项目,或者我必须用其他小部件制作自己的导航栏 List nonrepadybottomitems=[
BottomNavigationBar
。问题是,我按照我的要求制作了这个条,但是当开关设置为true但无法找到解决方法时,我需要它来更新它的项目
我有两个列表
,其中有两个不同的导航栏项,我将它们分配给第三个列表,该列表包含活动列表,具体取决于开关状态。此变量用于设置我的navbarItem中的项目,但setState()
似乎不会重新构建navBar
有没有办法更新项目,或者我必须用其他小部件制作自己的导航栏
List nonrepadybottomitems=[
//一些项目
];
列表readyBottomItems=[
其他一些项目
];
列表=非累赘项;
脚手架(
正文:中(
孩子:开关(
值:switchConnect,
onChanged:(布尔型){
设置状态(){
开关连接=布尔;
});
}),
),
底部导航栏:底部导航栏(
onTap:(国际一){
设置状态(){
pageIndex=i;
if(开关连接){
activeItems=readyBottomItems;
}如果(!switchConnect),则为else{
活动项=非重复项;
}
});
},
currentIndex:pageIndex,
类型:BottomNavigationBarType.fixed,
项目:活动项目,
),
);
是的,您可以创建状态完整的底部导航栏来更改小部件的状态
开底板
InkWell(
onTap: () {
showModalBottomSheet(
context: context,
isScrollControlled: true,
builder: (context) {
return ModalBottomSheet(
);
});
})
class ModalBottomSheet extends StatefulWidget {
@override
_ModalBottomSheetState createState() => _ModalBottomSheetState();
}
class _ModalBottomSheetState extends State<ModalBottomSheet>
{
@override
Widget build(BuildContext context) {
// TODO: implement build
return Wrap(
children: <Widget>[
Container(
margin:
EdgeInsets.only(left: 10.0, right: 10.0, top: 15.0, bottom: 15.0),
child: Column(
Widgets(),
)
)
],
);
}
}
有状态底片
InkWell(
onTap: () {
showModalBottomSheet(
context: context,
isScrollControlled: true,
builder: (context) {
return ModalBottomSheet(
);
});
})
class ModalBottomSheet extends StatefulWidget {
@override
_ModalBottomSheetState createState() => _ModalBottomSheetState();
}
class _ModalBottomSheetState extends State<ModalBottomSheet>
{
@override
Widget build(BuildContext context) {
// TODO: implement build
return Wrap(
children: <Widget>[
Container(
margin:
EdgeInsets.only(left: 10.0, right: 10.0, top: 15.0, bottom: 15.0),
child: Column(
Widgets(),
)
)
],
);
}
}
class ModalBottomSheet扩展StatefulWidget{
@凌驾
_ModalBottomSheetState createState()=>ModalBottomSheetState();
}
类_ModalBottomSheetState扩展状态
{
@凌驾
小部件构建(构建上下文){
//TODO:实现构建
回程包装(
儿童:[
容器(
保证金:
仅限边集(左:10.0,右:10.0,顶部:15.0,底部:15.0),
子栏(
Widgets(),
)
)
],
);
}
}
我实际上找到了setState()不起作用的原因。似乎activeItems变量的赋值出现了一些问题,因此它没有更改条,因为没有什么新内容
所以setState实际上在底部导航栏上工作