我试图将一个列表的值复制到另一个列表,我使用三个按钮,第一个按钮将值附加到 mylist,第二个按钮清除 mylist,第三个按钮将值从 mynewlist 复制到 mylist。
我试过这个
List<String> mylist = [
'Albania',
'Andorra',
'Armenia',
'Austria',
'Azerbaijan',
'Belarus',
'Belgium',
'Albania',
'Andorra',
'Armenia',
'Austria',
'Azerbaijan',
'Belarus',
'Belgium',
];
List<String> mynewlist = [
'Albania',
'Andorra',
'Armenia',
'Austria',
'Azerbaijan',
'Belarus',
'Belgium',
'Albania',
'Andorra',
'Armenia',
'Austria',
'Azerbaijan',
'Belarus',
'Belgium',
];
Padding(
padding: const EdgeInsets.all(5.0),
child: Row(
children: <Widget>[
Expanded(
child: FlatButton(
onPressed: () {
setState(() {
print('clicked 1st');
print(mylist.length);
print(mynewlist.length);
mylist.add('sdsds');
});
},
child: Container(
child: Column(
children: <Widget>[
Image.asset(
'images/bulb.png',
width: 100,
height: 100,
),
Text('bulb')
],
),
),
),
),
Expanded(
child: FlatButton(
onPressed: () {
setState(() {
print('clicked 2nd');
print(mylist.length);
print(mynewlist.length);
//after i set mylist = mynewlist; when i click this button it clears the old and new list.
mylist.removeRange(0, mylist.length);
});
},
child: Container(
child: Column(
children: <Widget>[
Image.asset(
'images/bulb.png',
width: 100,
height: 100,
),
Text('bulb')
],
),
),
),
),
Expanded(
child: FlatButton(
onPressed: () {
setState(() {
print('clicked 3rd');
print(mylist.length);
print(mynewlist.length);
mylist = mynewlist;
});
},
child: Container(
child: Column(
children: <Widget>[
Image.asset(
'images/bulb.png',
width: 100,
height: 100,
),
Text('bulb')
],
),
),
),
),
],
),
)
Run Code Online (Sandbox Code Playgroud)
在第一次它完美地工作第二次我单击第二个按钮时,它会清除 mylist 和 mynewlist。
如何在不清除新列表的情况下复制第二个列表的值
Ibr*_*han 26
使用myList = List.from(mynewlist);代替mylist = mynewlist;
小智 14
使用:
myNewList = [...myOldList]
Run Code Online (Sandbox Code Playgroud)
myOldList它创建从到 的项目的浅表副本myNewList
有关更多信息:您可以搜索“dart 中的扩展运算符”。
那是因为您复制了对象引用(mylist = mynewlist)而不是列表的内容。因此,在第一次单击后,mylist 引用了与 mynewlist 相同的内存对象。因此,对其中之一的任何操作都会影响两者。
要解决您的问题,您需要保持对象引用完整无缺,只需复制这些列表的内容即可。
| 归档时间: |
|
| 查看次数: |
10030 次 |
| 最近记录: |