Flutter 更新下拉列表值而不重建所有小部件树

Flutter 更新下拉列表值而不重建所有小部件树,flutter,dart,Flutter,Dart,这是我在StackOverflow的第一个问题,我是一个飞镖新手,所以我希望从这里得到一些帮助 我正在编写一个使用TableCalendar进行约会的应用程序,我使用“events”属性加载日历中某些日期的数据,因此当我选择任何日期时,如果该日期有数据,我将其数据加载到下拉按钮中,我使用Stream broadcast()在每次选择日期时收听,以便下拉项根据日期进行更改 到目前为止,我没有问题,问题是当我的下拉项准备就绪,我尝试在下拉菜单中选择另一个值时,因为该值需要使用OnChanged属性更

这是我在StackOverflow的第一个问题,我是一个飞镖新手,所以我希望从这里得到一些帮助

我正在编写一个使用TableCalendar进行约会的应用程序,我使用“events”属性加载日历中某些日期的数据,因此当我选择任何日期时,如果该日期有数据,我将其数据加载到下拉按钮中,我使用Stream broadcast()在每次选择日期时收听,以便下拉项根据日期进行更改

到目前为止,我没有问题,问题是当我的下拉项准备就绪,我尝试在下拉菜单中选择另一个值时,因为该值需要使用OnChanged属性更新,我需要调用setState,但当我这样做时,所有小部件树都会重建,如果我不使用setState,很明显这个值不会改变

我只需要更新下拉菜单项,而不需要重新绘制所有小部件树,保留除下拉值之外的所有其他小部件的实际状态,我一直在到处寻找任何解决方案,但我没有找到它

TableCalendar和DropdownButton位于Listview中,数据源是一个JSON文件,我使用Future Builder构建Listview,使用StreamBuilder构建DropdownButton

这是下拉代码:

 StreamBuilder(
            stream: streamHora.stream,
            builder: (BuildContext context, AsyncSnapshot snapshot) {
              if (!snapshot.hasData) {
                return DropdownButton<String>(
                  icon: Icon(Icons.arrow_drop_down),
                  style: _textStyle(Colors.black, 15.0),
                  items: [],
                  onChanged: (value) {},
                  value: "",
                );
              }
              return DropdownButton<String>(
                icon: Icon(Icons.arrow_drop_down),
                style: _textStyle(Colors.black, 15.0),
                items: snapshot.data,
                onChanged: (String value) {
                  setState(() {
                    _dropdownHoraValue = value;
                  });
                },
                value: _dropdownHoraValue,
              );
            },
          ),
StreamBuilder(
stream:streamHora.stream,
生成器:(BuildContext上下文,异步快照){
如果(!snapshot.hasData){
返回下拉按钮(
图标:图标(图标。箭头下拉),
样式:_textStyle(Colors.black,15.0),
项目:[],
一旦更改:(值){},
值:“”,
);
}
返回下拉按钮(
图标:图标(图标。箭头下拉),
样式:_textStyle(Colors.black,15.0),
项目:snapshot.data,
onChanged:(字符串值){
设置状态(){
_dropdownHoraValue=值;
});
},
值:_dropdown值,
);
},
),
任何想法或建议都将不胜感激