【发布时间】:2022-01-23 08:06:01
【问题描述】:
我遇到了一个问题,我无法通过简单的方法将模型列表复制到新列表。
我想要实现的是:
List<Package> event_packages = [...]; // list with data here
List<Package> packages = List.from(event_packages);
现在的问题是,每当我编辑包中的一些数据时,事件包也会被编辑。我相信是因为它复制了对象引用。
目前的解决方案是:
List<Package> packages = [];
event_packages.forEach((package) {
packages.add(Package.fromJson(jsonDecode(jsonEncode(package))));
});
但看起来非常笨拙和缓慢。
这样做的正确方法是什么?
【问题讨论】:
-
如果您想克隆
Package的实例,通过JSON 肯定是一种方法。当然,没有什么可以阻止编写一个不同的命名构造函数(例如Package.from(Package other)),将它需要的任何东西从other复制到this。