【问题标题】:Variable changes when it hasn't been changed变量未更改时更改
【发布时间】:2019-09-03 03:31:14
【问题描述】:

我有一个 List 变量来存储一些数据的最后保存值。当此变量与当前数据不同时,它会更新它以匹配。但是,当我检查它们是否相同时,它们总是相同!当数据变量更新时,我检查了两者,最后保存的变量也发生了变化。当我分配它们的值时,Dart 是否会以某种方式链接变量?

我在检查之前尝试打印这两个变量,以确保它们没有改变,但在数据变量改变的那一刻它们仍然是相同的。

print("checking if data updated");
print(lastSavedData);
print(datas);
if (lastSavedData == datas) {
  print("no new data");
} else {
  print("new data is there");
  saveData();
  lastSavedData = datas;
}
I/flutter ( 8751): checking if data updated
I/flutter ( 8751): []
I/flutter ( 8751): []
I/flutter ( 8751): no new data
I/flutter ( 8751): checking if data updated
I/flutter ( 8751): [{name: Fu, notes: , goodness: 0}]
I/flutter ( 8751): [{name: Fu, notes: , goodness: 0}]
I/flutter ( 8751): no new data

【问题讨论】:

  • 您必须提供更多代码 sn-p 尤其是显示这些变量的设置位置。
  • 我添加了唯一改变 lastSavedData 变量的地方。
  • 您可能在某处更新了datas 变量,当您将其分配给它时,它持有对该变量的引用。
  • 向我们展示您在哪里使用数据变量
  • datas 变量是应该更新的......所以我当然是。除非有新数据,否则它是不应更改的 lastSavedData 变量。

标签: flutter dart


【解决方案1】:

它存储的是指向变量的链接,而不是数据。只需以适合您代码的方式从变量中获取数据,然后将其分配给变量而不是引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 2020-09-18
    • 2017-05-10
    • 1970-01-01
    • 2018-05-08
    相关资源
    最近更新 更多