이 글은 골든래빗 《코드팩토리의 플러터 프로그래밍》의 1장 써머리입니다
Dart는 모든 플랫폼에서 빠른 앱을 개발하기 위해 클라이언트에 최적화된 언어다.
Dart의 특징이자 장점은 아래와 같다
main 함수
void main(){
}
print( ) 함수
void main(){
pring('Hello Hazel)
}
-문자열 콘솔에 출력
다양한 변수 타입
var -[기본형식] var 변수명 = 값;
dynamic
상수 final / const
void main(){
final DateTime now = DateTime.now();
const DateTime now = DateTime.now();
}
해당 코드 실행시 const에서 에러가 발생한다 (const는 빌드될 때 값이 확정되기 떄문)
변수 타입
변수타입 | |
---|---|
string : 문자열 | int : 정수 |
double : 실수 | bool : 불리언 |
add( )
void main() {
List<String> flutterStudy = ['베짱이','Hun','Jake','이지훈'];
print(flutterStudy);
flutterStudy.add('헤이즐');
print(flutterStudy);
}
Where( )
void main() {
final HunflutterStudy = flutterStudy.where(
(name) => name == 'Hun' || name == '이지훈',
);
print(HunflutterStudy);
print(HunflutterStudy.toList());
}
map()
void main() {
List<String> flutterStudy = ['베짱이','Hun','Jake','이지훈', '헤이즐'];
final allMembers = flutterStudy.map(
(name) => '스터디멤버 $name',
);
print(allMembers);
}
When? List에 있는 값을 순서대로 순회하며 값을 변경
How? 매개변수에 함수를 입력하면, 입력된 함수는 기존값을 하나씩 매개변수로 받음. 반환값이 현재값을 대체.
reduce()
void main() {
List<String> flutterStudy = ['베짱이','Hun','Jake','이지훈', '헤이즐'];
final allMembers = flutterStudy.reduce((value, element) => value + ',' + element);
print(allMembers);
}
When? List에 있는 값을 순서대로 순회하며 값을 쌓아가며 입력된 함수를 실행 (나머지 함수는 Iterable을 반환했으나 reduce
함수는 List 멤버와 같은 타입을 반환
How? 매개변수에 함수를 두개를 입력하면, 순회를 시작할 때 첫번째 매개변수(value
)와 두번째 매개변수(element
)를 각각 받는다. 첫 순회 이후 반환된 기존 값을 첫번째 매개변수에, 그 다음값을 두번째 매개변수로 입력 받으며 리스트 내부의 값들을 점차 더해가는 기능으로 사용한다.
fold( )
void main() {
List<String> flutterStudy = ['베짱이','Hun','Jake','이지훈', '헤이즐'];
final allMembers = flutterStudy.fold<int>(
0, (value, element) => value + element.length);
print(allMembers);
}
When? reduce() 함수와 실행논리는 똑같으나 reduce() 함수는 실행되는 요소의 타입이 일치해야한다면 fold() 함수는 어떤 타입이든 반환 가능.
How? 첫번째 매개변수에 시작할 값 지정, 두번째 매개변수에 작동하는 함수를 입력한다. 예시를 보면 value는 최초 순회때의 첫번재 값을 사용하고 element는 람다식으로 최초순회때 초기값인 0이 입력되고 이후에는 기존 순회 반환값을 받아온다.
void main() {
Map<String, String> animals = {
'dog' : '강아지',
'cat' : '고양이',
'horse' : '말',
'rat' : '쥐',
};
print(animals['dog']);
print(animals['cat']);
}
When? List가 순회와 순차의 방식으로 값을 받아온다면 Map은 지도에서 도착지와 출발지로 경로를 찾듯 키와 값의 짝을 저장해 원하는 값을 빠르게 찾는데 중점을 둔다.
How? Map<키의 타입, 값의 타입> 맵이름 형식으로 생성
void main() {
Map<String, String> animals = {
'dog' : '강아지',
'cat' : '고양이',
'horse' : '말',
'rat' : '쥐',
};
print(animals.keys);
print(animals.values);
}
Map
타입은 키와 값을 모두 반환받을 수 있다. 변수에 key와 value 게터를 실행하면 된다.Set타입
void main() {
Set<String> flutterStudy = {'베짱이','Hun','Jake','이지훈', '헤이즐'};
print(flutterStudy);
print(flutterStudy.contains('헤이즐'));
print(flutterStudy.toList());
List<String> flutterMems = ['베짱이', 'Hun', 'Jake'];
print(Set.from(flutterMems));
}
When? 중복을 방지해 유일한 값들만 존재하는 것을 보장하기에 각 값의 유일함을 보장받고 싶을 때 사용
How? Set.toList를 사용하면 기존 데이터를 유지한채 Set을 List 타입으로 변환 가능하며, 키와 값을 따로 리스트로 받고 싶을 때는 Keys.toList(), values.toList()를 사용하면 된다.
Enum
enum Status{
approved,
pending,
rejected,
}
void main(){
Status status = Status.approved;
print(status);
}