在我应用程序的home_page中,我有一些逻辑可以从类(CircleData)中获取一些数据,并设置一个与其相等的变量。 (简化示例,以便于解释)。

我的课:

class CircleData {
static List circle1 = [1];
}

在我的主页中,有一个按钮,当按下该按钮时,变量x等于CircleData中的List,如下所示:
x = CircleData.circle1;

然后,我继续修改类中的circle1列表(通过不同页面中的其他按钮)。我最终将其值切换为[1、2、3],因此现在看起来如下所示:
class CircleData {
static List circle1 = [1, 2, 3];
}

然后,我回到首页,尝试打印x,而不是按预期方式打印“[1、2、3]”,而不是打印“[1]”。为什么会这样?为什么我只将ONCE设置为circle1的值的x值会突然改变并与circle1一起更新?感谢您的帮助,不胜感激!

另一个版本:

因此,我正在制作一个游戏,屏幕上有一堆圆圈。该类中的列表:
class CircleData {
static List circle1 = [1];
}

是我所有脚本都存储更改后的圈子堆栈版本的位置(您可以在游戏进行时修改堆栈)。因此,在每转一圈之后,此处的列表可能更改为[1,4,18,3],然后更改为[1,45,4]。每转之后,我希望有一个选项可以撤消您的上一转。我正在尝试以以下方式实现此目的:在转弯结束之前修改列表之前,我将在一切都发生变化并且转弯结束之前创建一个新列表(该类的circle1的副本)。然后,当玩家按下撤消按钮时,circle1的复制版本(我最初称为x)成为circle1的新值,因此撤消了最后一回合。唯一的问题是,当转弯更改时,我的变量(x,即转弯结束之前的circle1的复制版本,并且实际的circle1已更新)将更新为我的circle1。我希望它是独立的,因此如果玩家选择撤消,我可以将circle1设置为它。

最佳答案

@ChristopherMoore告诉我这是一个引用书或我进行了一些研究后,想出了一种不用引用就可以分配的方法。分配它而不使其成为引用可以解决我的问题。

这种分配方式不起作用:(其中a和b是列表)

List a = b;

此类型有效:(其中a和b是列表)
List a = List.from(b);

关于dart - 当我只设置一次时,我的变量会自动更新。为什么会这样?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61980425/

10-11 09:13