【问题标题】:How to actually duplicate lists/objects in Dart/Flutter如何在 Dart/Flutter 中实际复制列表/对象
【发布时间】:2022-01-04 21:25:49
【问题描述】:

我有一个包含一些用户输入的对象列表。

我想要实现的目标:在将对象重置为其默认值之前复制列表,这样我就不会丢失信息。

问题:无论我怎么尝试,每当我修改list_1中的对象时,list_2中的对象也会被修改;覆盖我想要保留的数据。

尝试解决它

我尝试以各种方式声明第二个列表:

list_2 = list_1;
list_2 = List.of(list_1);
list_2 = [...list_1);
list_2 = list_1.toList();

没有运气。然后我尝试了这个:

list_2=[];
for (var i in list_1){
  list_2.add(i);}

仍然是相同的行为。如果我修改 list_1 中的对象的值,则 list_2 中的相应对象也会更改。

我很困惑。我只是在创建对对象的新引用,而不是实际上将它们相乘吗?我将如何改变它?有其他事情发生吗? 谢谢!

【问题讨论】:

  • 您的问题是 在 Dart 中没有制作对象副本的通用方法List.of(list_1)[...list_1]list1.toList() 都将复制 list_1不是包含的对象。您的问题的答案取决于这些对象是什么,而您尚未指定您的Lists 包含哪些对象。
  • 对象是我创建的类的实例。它们有两个属性;一个存储字符串(来自 TextField 的用户输入),另一个存储一个整数,如果用户将任务标记为已完成,则该整数进行标记。我的想法是在重置内容时使用该对象来保存信息。 >> 不知道你能不能说出来;)……但我对此很陌生;所以这是我为自己提出的一个培训项目......正是为了遇到这样的问题。
  • 您需要遍历原始list_1 并构建一个新的List,为每个元素调用您的类的适当构造函数。向您的类添加clone() 方法可以使其更容易,但您需要注意在任何派生类中适当地覆盖它。
  • 谢谢!我从来没有听说过 clone() 的东西,所以我需要调查一下……但即使我现在认为这太过分了……我想我可以想出一个办法调用我的类,创建新对象并将它们放入一个新列表中。所以这是一个前进的方向,我理解问题的根本原因......这让我感到困惑。再次感谢。

标签: list flutter dart object


【解决方案1】:

试试这个:

创建了一个演示列表:

  List<Status> statuses = <Status>[
    Status(name: 'Confirmed', isCheck: true),
    Status(name: 'Cancelled', isCheck: true),
  ];
List<Status> otherStatuses = statuses.map((status)=>Status(name:status.name, isCheck:status.isCheck)).toList()

【讨论】:

  • myList = List.from(mynewlist); > 试过了;一样。不过还是谢谢你的回答! ... 至少我今天学习了很多方法来从列表中创建列表;)
  • 请尝试给定的代码。
  • 不太清楚这是在做什么。我创建了一个地图列表,然后将该列表映射到另一个列表?你能告诉我为什么这有帮助吗?时间不早了……我会打盹,明天再看一遍。谢谢!
猜你喜欢
  • 2022-01-09
  • 2021-05-13
  • 1970-01-01
  • 2020-02-10
  • 2020-06-06
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
  • 2021-05-24
相关资源
最近更新 更多