Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 更新dart中的变量会同时更改两个数据_Flutter_Dart - Fatal编程技术网

Flutter 更新dart中的变量会同时更改两个数据

Flutter 更新dart中的变量会同时更改两个数据,flutter,dart,Flutter,Dart,如何在不更改list1的值的情况下更改list2的值。更改列表2数据将更新列表1数据 var list = [1,2,3]; var list1; var list2; list1 = list; list2 = list; list2[0] = 100; print(list1); //output [100, 2, 3] // need this to be [1,2,3] print(list2); //output [100, 2, 3] 使用List.of构造函数将Lis

如何在不更改list1的值的情况下更改list2的值。更改列表2数据将更新列表1数据

var list = [1,2,3];

var list1;
var list2;

list1 = list;
list2 = list;

list2[0] = 100;  

print(list1); //output [100, 2, 3] // need this to be [1,2,3]
print(list2); //output [100, 2, 3]

使用
List.of
构造函数将
List
的所有
元素分配给
list2

添加了一个示例:

var列表=[1,2,3];
var列表1;
var列表2;
列表1=列表;
//使用列表
列表2=列表的列表(列表1);
列表2[0]=100;
印刷品(
清单1)//输出[1,2,3]
打印(列表2)//输出[100,2,3]

使用构造函数的
列表将
列表的所有
元素
分配给
列表2

添加了一个示例:

var列表=[1,2,3];
var列表1;
var列表2;
列表1=列表;
//使用列表
列表2=列表的列表(列表1);
列表2[0]=100;
印刷品(
清单1)//输出[1,2,3]
打印(列表2)//输出[100,2,3]

对象通过引用传递。当你做
list1=list
list2=列表,您将
list
的引用分配给
list1
list2
。因此,在该引用处更改对象将更改您在所有这些不同变量处看到的数据

如果希望单独修改这些对象,则需要创建一个新的
列表
实例。这可以使用
List.of
或带有扩展运算符的
List
文本来完成

list2=List.of(List);

list2=[…list];

如果只对
list2
执行此操作,则
list1
list
都将保持不变,即使只更改一个

var列表=[1,2,3];
var列表1;
var列表2;
列表1=列表;
列表2=[…列表];
列表2[0]=100;
列表1[0]=200//列表1在此处更改
//但“列表”将被更改,如下所示
打印(列表)//输出[200,2,3]
打印(列表1)//输出[200,2,3]
打印(列表2)//输出[100,2,3]

如果希望这些
List
s中的每一个都是完全独立的,则需要使用
List.of
List
文本,并对
list1
list2
对象进行引用传递。当你做
list1=list
list2=列表,您将
list
的引用分配给
list1
list2
。因此,在该引用处更改对象将更改您在所有这些不同变量处看到的数据

如果希望单独修改这些对象,则需要创建一个新的
列表
实例。这可以使用
List.of
或带有扩展运算符的
List
文本来完成

list2=List.of(List);

list2=[…list];

如果只对
list2
执行此操作,则
list1
list
都将保持不变,即使只更改一个

var列表=[1,2,3];
var列表1;
var列表2;
列表1=列表;
列表2=[…列表];
列表2[0]=100;
列表1[0]=200//列表1在此处更改
//但“列表”将被更改,如下所示
打印(列表)//输出[200,2,3]
打印(列表1)//输出[200,2,3]
打印(列表2)//输出[100,2,3]

如果您希望这些
List
s中的每一个都是完全独立的,那么您需要使用
List.of
List
文本,并对
list1
list2

进行扩展。如果您要复制列表,您应该始终选择
List.of
(或
[…List]
List.toList()
)超过
List.from
因为
.from
会添加不必要的运行时检查。还要注意的是,与
List.of
不同,
List.from
(没有显式类型)创建了一个
List
@jamesdlin-Ah没有想到,谢谢。编辑了答案。如果您要复制列表,您应该始终更喜欢
list.of
(或
[…list]
list.toList()
)而不是
列表。from
因为
.from
会添加不必要的运行时检查。还请注意,与
list.of
不同,
list.from
(没有明确的类型)创建一个
列表
@jamesdlin-Ah没有想到,谢谢。编辑了答案。请参阅我的评论:首选
List.of
而不是
List.from
。感谢您的见解@jamesdlin。编辑了答案。请参阅我的评论:首选
List.of
而不是
List.from
。感谢您的见解@jamesdlin。编辑了答案。你试过我的答案吗?你试过我的答案吗?