如何解决有效地更新SetState中的一系列变量Dart-Flutter
我找不到在Flutter项目中更新一系列变量的简单方法。
我首先尝试使用Enums和函数在setState((){})
调用中更改变量。
我有这样的东西:
void changeMode(Mode mode) {
if (mode == Mode.start) {
print('App is now in start mode');
mode = Mode.start;
bool1 = true;
bool2 = false;
bool3 = false;
color1 = kAColor1;
color2 = kAColor2;
} else if ...}
但是什么都没有更新,我想这是由于我的函数没有返回任何东西。
如果我对setState((){})
中的每个变量进行硬编码,它都可以正常工作,但是绝对效率低下,而且一团糟。
也许我应该去上课?我需要创建一个包含所有子类的超类来做类似的事情吗?
解决方法
每次调用setState时,UI都会重建。您可以使用class
或map
来处理数据。
使用课程:
setState(() {
currentData = actualData.copyWith(bool1: false)
})
这样,您仅更改与currentData
不同的数据。在此示例中,我维护了currentData
中的所有信息,并且仅更改了bool1
的值。
obs:
copyWith
是一个factory
,它返回相同类型的currentData
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。