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