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

时间:2020-12-24 16:50:58

标签: flutter dart

这是我在 StackOverflow 上的第一个问题,我是一个 flutter and dart 新手,所以我希望能从这里得到一些帮助。

我正在编写一个使用 TableCalendar 进行约会的应用程序,我使用“事件”属性在日历中的某些日期加载数据,因此当我选择任何日期时,如果该日期有数据,我将其数据加载到一个下拉按钮,我每次选择日期时都使用 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,
              );
            },
          ),

任何想法或建议将不胜感激。

0 个答案:

没有答案