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

时间:2020-07-10 08:57:45

标签: flutter dart

如果更改另一个数组的值,则像主数组这样的有线问题已更改。我认为问题是关于复制相同的地址,不确定但只是考虑一下。最近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" 

如何防止主数组发生变化?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

我在一个项目中遇到了同样的问题。我所做的是,使用const [word, setWord] = useState('');编码和解码对象,以帮助您复制对象,从而不会影响主列表。

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

json

希望对您有帮助。

答案 2 :(得分:1)

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

根据您的代码:

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

_orderList[0]_pageList[0].element指向相同的引用(如果它们不是原始的)。

据我所知,dart中没有通用的copy()clone()方法。因此,如果需要单独的实例,则需要自己复制对象。 (请参阅this question