Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 有没有办法更新BottomNavigationBarItems?_Flutter_Navigationbar - Fatal编程技术网

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实际上在底部导航栏上工作