flutter dart 유용한 함수 정리
iterable
- 반복가능 한 그룹 - list or array or linked map
- 반복가능 하지 않은 그룹 - map
배열의 복사 방법
var list = [1,2,3,4];
//얇은 복사 : 원래 레퍼런스를 참조해 map안의 함수가 연산되어 결과가 나옴
var newList = list;
print(newList);//[1,2,3,4]
//깊은 복사
var spreadList = [10,...list,100];
print(spreadList);//[10,1,2,3,4,100]
map
- map은 iterable 대상으로 foreach를 돌린다.
var list = [1,2,3];
var newList = list.map((e)=>e = e+1);
print(list); //[1,2,3]
print(newList); //[2,3,4]
asMap
- 배열 값에 index 키 값을 삽입해줘서 반환해준다.
- 키값은 인덱스로 부여된다. (0부터 시작)
var words = ["fee","fi","fo","fum"];
var map = words.asMap();
print(map[0]+map[1]); //feefi
print(map.keys.toList()); //[0,1,2,3]
toList
- 생성되는 값들을 리스트로 만들어 반환
List orderList = [1,2,3];
List newList =orderList.toList(); //메모리값 전달 : 모두 변경됨
for(int i=0;i<newList.length;i++){
newList[i] =0;
}
print(orderList.toString());//원래 값 그대로
where
- 배열 요소를 필터링한다.
var list = [1,2,3,4];
var filterList = list.where((e)=>e!=3);//3이 아닌 값만 필터, 다른 변수에 무조건 저장해야함
print(filterList);//[1,2,4]
for or foreach
- 배열 요소를 반복한다.
var list = [1,2,3,4];
for(var e in list){
print(e);//1 2 3 4
}
list.forEach((e)=>print(e));//1,2,3,4
add, addAll, length, clear
var fruits = ['apples', 'orange'];
//값 추가하기
fruits.add('kiwis');
print(fruits);
//다수의 항목 추가하기
fruites.addAll(['grapes','bananas']);
print(fruites);
//길이 가져오기
print(fruits.length);
//단일 항목 삭제
var appleindex = fruits.indexOf('apples');
fruits.removeAt(appleindex);
//모든 항목 삭제
fruits.clear();//[]
sort
- list 정렬을 위한 메소드
- 반환값은 0보다 작거나, 0이거나, 0보다 커야함
- 문자열을 비교하는 경우 compareTo() 사용
var sortFruits =['b','a','apples'];
sortFruits.sort((a,b)=>a.compareTo(b));
print(sortFruits);//['a','apples','b']
firstWhere
- 요소를 반복하고 주어진 조건의 첫번째 요소를 반환한다.
var items = ['Salad','Popcorn','Toast','Lasagne'];
var element = items.firstWhere((element) => element.length>5);
print(element);//Popcorn, 인덱스가 아닌 요소를 반환
lastWhere
- 요소를 반복하고 주어진 조건의 마지막 요소를 반환한다.
fold
- 배열의 조건을 누적시켜 반환한다.
List<int> numbers = [0,1,2,3,4,5];
int sum = numbers.fold(0,(total, element){
//첫번째 시작할 값, total은 이전에 리턴해준 값
return total+element;
});
print(sum);//15
reduce
- 사용방식은 fold와 차이없고, reduce에서는 시작값 0을 지정하지 않는다.
List<int> numbers = [0,1,2,3,4,5];
int sum = numbers.reduce((total, element){
//total은 이전에 리턴해준 값
return total+element;
});
print(sum);//15