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;
}
後續
後續有新的發現如何處理會更新,另外有知道的大佬歡迎留言告知,感激不盡。一起學習進步!