如何在飞镖中复制数组的元素



如果更改了另一个数组的值,那么像主数组这样的连接问题已经更改。我认为问题是关于复制相同的地址,不确定,但只是想它。我已经尝试了过去3个小时,但无法摆脱它。

请看下面的插图以获得更好的想法。

List<page> _pageList;
List<page> _orderList = [];
_pageList = _apiResponse.result as List<page>;
_orderList.add(_pageList[0].element);
_orderList[0].title = "XYZ" 
//--> Here if I change the `_orderList[0].title` then it also change the `title` inside "_pageList" 

我们如何防止主数组中的更改?

我在我的一个项目中遇到了同样的问题。我所做的是,使用json对对象进行编码和解码,帮助您复制对象,这样就不会影响主列表。

在您的代码的第三行之后,进行如下所示的更改

Elements copyObject = Elements.fromJson(_pageList[0].element.toJson());
// First of all you have to convert your object to the Map and and map to original object like above
_orderList.add(copyObject);    

希望这对你有帮助。

您可以使用getter函数来创建列表的副本,并使用它来代替更改您的实际列表。示例:

List<Page> get orderList{
return [..._orderList];
}

列出Dart中复杂类型的存储引用,因此这是预期行为。

从您的代码:

_orderList.add(_pageList[0].element);

_orderList[0]_pageList[0].element指向同一引用(如果它们是非基元的(。

据我所知,飞镖中没有通用的copy()clone()方法。因此,如果您想要一个单独的实例,您需要自己复制对象。(见此问题(

最新更新