List
List初始化
Dart语法中的array就是list ,list集合(也称为数组)所以没有Android中对应的array和list,也就没有对应的**toList()和toArray()**这个两个函数。
list初始化
var list =[];
List<dynamic> list =[];
List取元素
list[0] 这种用角标来取元素的写法
List 的浅拷贝
Dart list的源码中对集合copy等操作都是属于浅拷贝
///List.from
external factory List.from(Iterable elements, {bool growable: true});
///List.of
factory List.of(Iterable<E> elements, {bool growable: true}) =>
new List<E>.from(elements, growable: growable);
///List.generate
factory List.generate(int length, E generator(int index),
{bool growable: true}) {
List<E> result;
if (growable) {
result = <E>[]..length = length;
} else {
result = new List<E>(length);
}
for (int i = 0; i < length; i++) {
result[i] = generator(i);
}
return result;
}
///list.addAll
等等
List 的深拷贝
场景
当我们需要对数据进行修改等操作,但是是不改变源数据。
实现
答案是 我目前没有找到List深拷贝的情况
但是我们又最笨的办法
对于数据的处理里面是对象就new 新开辟内存来循环赋值
伪代码
///深拷贝
List<BetContests> _getList() {
List<BetContests> copyList = [];
for (var item in widget.betContests) {
BetContests betContests = new BetContests(
item.leagueName,
item.gameResult,
_getBetItemsList(item.betItems),
item.dgpItems);
copyList.add(betContests);
}
return copyList;
}
List<BetItems> _getBetItemsList(List<BetItems> list) {
List<BetItems> copyList = [];
for (var item in list) {
BetItems betItems = new BetItems(
item.gameTypeId, item.ggType,);
copyList.add(betItems);
}
return copyList;
}
后续
后续有新的发现如何处理会更新,另外有知道的大佬欢迎留言告知,感激不尽。一起学习进步!