【问题标题】:Update a series of variable in SetState() efficiently (Dart-Flutter)有效更新 SetState() 中的一系列变量(Dart-Flutter)
【发布时间】:2020-08-13 16:59:34
【问题描述】:

我在我的 Flutter 项目中找不到更新一系列变量的简单方法。 我首先尝试使用枚举和函数来更改 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((){}) 中的每个变量都进行硬编码,它可以正常工作,但它绝对是低效的,而且要纠正是一团糟。

也许我应该去上课?我需要创建一个包含所有子类的超类来做这样的事情吗?

【问题讨论】:

  • 您是否尝试过打印您传递给这些变量的值?
  • 初始打印语句被执行但变量不变

标签: flutter dart


【解决方案1】:

每次调用 setState 时,您的 UI 都会重建。您可以使用classmap 来操作您的数据。

带类:

setState(() {
  currentData = actualData.copyWith(bool1: false)
})

这样,您只更改与currentData 不同的数据。在这个例子中,我维护了来自currentData 的所有信息,并且只更改了bool1 的值。

Obs:copyWith 是一个 factory,它返回相同类型的 currentData.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-06
    • 2019-05-19
    • 1970-01-01
    • 2022-12-19
    • 1970-01-01
    • 2021-05-31
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多