728x90
1. where
void main() {
List<Map<String, String>> people =[
{
'name' : '로제',
'group' : '블랙핑크',
},
{
'name' : '지수',
'group' : '블랙핑크',
},
{
'name' : 'RM',
'group' : 'BTS',
},
];
print(people);
//where를 넣으면 T/F 값을 리턴한다.
final balckPink = people.where((x)=> x['group'] == '블랙핑크');
print(balckPink);
}
2. reduce
prev에는 이전 함수의 리턴 값이 들어가고
next는 다음 인덱스 값이 들어간다.
void main() {
List<int> numbers = [
1,
3,
5,
7,
9,
];
final result = numbers.reduce((prev, next){
print("============");
print('previous: $prev');
print('next: $next');
print('total: ${prev+next}');
return prev + next;
});
print("============");
print('result :: $result');
}
reduce로 글자 더하기
void main() {
List<String> words = [
'하이',
'Dart언어',
'신기해요',
];
final sentence = words.reduce((prev, next) => prev + next);
print(sentence);
}
태초의 타입과 리턴 타입이 같아야한다.
3. fold
fold는 타입이 같지 않아도 된다.
void main(List<String> arguments) {
List<int> numbers = [1, 3, 5, 6, 9];
final sum = numbers.fold<int>(0, (prev, next) => prev + next);
print(sum);
}
List<String> words = [
'안녕하세요',
'플러터',
'공부중입니다',
];
final sentence = words.fold<String>('', (prev, next) => prev + next);
print(sentence);
final cnt = words.fold<int>(0, (prev, next) => prev + next.length);
print('Count :: $cnt');
4.casecading operator
//여러개의 List 합치기
List<int> even = [4, 6, 8, ];
List<int> odd = [1, 3, 5, 7, ];
//casecading operator :: 리스트 안에 값을 풀어넣는 역할
print([even, odd]); //리스트 안에 리스트가 나옴 [[2,4,6,8],[1,3,5,7]]
print([...even, ...odd]) // 풀어서 완전히 새로운 리스트로 나옴 [2,4,6,8,1,3,5,7]
//새로운 List임을 증명하는법
print(print == [...even]); //false
5. map을 클래스에 넣어주기
void main() {
List<Map<String, String>> people = [
{
'name': '로제',
'group': '블랙핑크',
},
{
'name': '지수',
'group': '블랙핑크',
},
{
'name': 'RM',
'group': 'BTS',
},
];
print(people);
final parsedPeople = people
.map(
(x) => Person(
name: x['name']!,
group: x['group']!,
),
)
.toList();
print(parsedPeople);
}
class Person {
final String name;
final String group;
Person({
required this.name,
required this.group,
});
}
Instance of 'Person' 이라고 뜨는 것을 바꿔주려면 아래와같이 오버라이드로 바꿔 줄 수 있다
class Person {
...
@override
String toString(){
return 'Person(name:$name, group:$group)';
}
}
더 간단하게 코드를 작성하는 경우 아래와 같이 하면 된다.
final result = people.map(
(x) => Person(
name: x['name']!,
group: x['group']!,
),
).where((x) => x.group == 'BTS');
print(result);
728x90
'Flutter' 카테고리의 다른 글
[Dart] Stream (0) | 2024.07.26 |
---|---|
[Dart] Async Programming 비동기 프로그래밍 (0) | 2024.07.25 |
[Dart] mapping (0) | 2024.07.17 |
[Dart] List를 Map 혹은 Set으로 변환하기 (0) | 2024.07.17 |
[Dart] function (0) | 2024.06.12 |