我是廣告,點擊一下吧!
標籤
#Flutter (15) 、 #PHP (9) 、 #Laravel (7) 、 #Dart (5) 、 #MySQL (5) 、 #Mac (4) 、 #VS Code (2) 、 #IDE (2) 、 #List (2) 、 #Android (2) 、 #Carbon (2) 、 #Linux (2) 、 #Shell Script (2) 、 #MySQL 效能 (1) 、 #Pagination (1) 、 #Cursor Pagination (1) 、 #LaTeX (1) 、 #個人空間 (1) 、 #Android Splash Screen (1) 、 #createFromTimestamp (1) 、 #資安 (1) 、 #Google Maps Static API (1) 、 #Mac M1 (1) 、 #floorMonth (1) 、 #subMonthNoOverflow (1) 、 #addMonthNoOverflow (1) 、 #subMonth (1) 、 #addMonth (1) 、 #keytool (1) 、 #Play App Signing (1)最近把 List 存到 BLoC 發現在 A 頁面取出後對這 List 操作後,B 頁面也會跟著被改變,是因為 Dart 物件預設是 call by reference。
void main() {
List<int> aList = [8787];
List<int> bList = aList;
print('aList: $aList');// aList: [8787]
print('bList: $bList');// bList: [8787]
bList.add(87);
print('aList: $aList');// aList: [8787, 87]
print('bList: $bList');// bList: [8787, 87]
}
只要在給值的時候使用加上 toList()
即可
void main() {
List<int> aList = [8787];
- List<int> bList = aList;
+ List<int> bList = aList.toList();
print('aList: $aList');// aList: [8787]
print('bList: $bList');// bList: [8787]
bList.add(87);
print('aList: $aList');// aList: [8787]
print('bList: $bList');// bList: [8787, 87]
}
試一試吧:https://dartpad.dev/?id=26d30bcd783277c83d00041279de673e