flutter
Dart 기본 문법
기본 문법
반드시 마지막에 세미콜론
- 기본 함수 : void main() {}
- 변수 선언 : var variable = 12; 변수는 재선언 할 수 없음.
- 출력 : print(variable);
- ‘${variable}’ : 이거 사용할 때 백틱이 아닌 그냥 따옴표 사용
타입
타입 끝에 물음표를 넣으면 null 이 들어갈 수 있다. (String?) 변수 끝에 느낌표를 넣으면 null 이 절대 들어갈 수 없다. (name2!)
- int
- double
- bool (true/false)
- String
- var : 타입을 자동으로 유추해서 타입 고정.
- dynamic : var와 비슷하지만 이후에 다른 타입 넣으면 타입 바뀜.
- final : 한 번 선언한 뒤로 절대 변경이 불가능함. 상수 역할 final의 경우에는 빌드 타임에 값을 알고 있지 않아도 된다. ⇒ DateTime 사용 가능.
- const : 한 번 선언한 뒤로 절대 변경이 불가능함. const의 경우에는 빌드 타임에 값을 알고 있어야 한다. 즉, 코드를 작성하는 순간부터 값을 알고 있어야 한다.
- DateTime : 날짜와 시간을 저장하는 변수 (코드가 실행되는 그 시간) DateTime now = DateTime.now();
오퍼레이터
- a ??= b : 만약 a 값이 null 일 경우 b 값으로 바꿔라.
타입 비교
- a is b : a의 타입이 b인지 확인 number1 is int
리스트
- List
name = [’a’, ‘b’, ‘c’]; - name.length : 길이 구하기
- name.add(’d’) : 값 삽입
- name.remove(’d’) : 값 제거
- name.indexOf(’a’) : 인덱스 가져오기
Map
키의 타입과 값의 타입 두 개를 선언해주어야 한다.
Map<String, String> dict = {
‘a’ : ‘A’,
‘b’ : ‘B’,
};
// 추가 1
dict.addAll ({
'e' : 'E',
});
// 추가 2
dict['f'] = 'F'
// 찾기
dict['a'] // A
// 삭제
dict.remove('a')
// key 값들 모두 가져오기
dict.keys
// value 값들 모두 가져오기
dict.values
Set
중복값 들어갈 수 없다. 리스트랑 비슷함.
final Set<string> names = {
'a',
'b',
'c'
}
// 추가
names.add('d')
// 삭제
names.remove('d')
// 존재하는지 확인
names.contains('b')
loop
// 기본 for 루프 말고 다른 방법
for(int number in numbers) {
// ...
}
enum
enum Status {
approved,
pending,
rejected
}
void main() {
Status status = Status.pending
}
함수
- positional parameter : 순서가 중요한 파라미터
- optional parameter : 있어도 되고 없어도 되는 파라미터 (대괄호 안에)
- named parameter : 이름이 있는 파라미터 (순서가 중요하지 않음)
// positional parameter
addNumbers(int x, int y, int z) {}
// optional parameter
addNumbers(int x, [int = 20 y, int z = 30]) {}
// named parameter
addNumbers({
required int x,
required int y,
required int z,
}) {}
addNumbers(x: 10, y: 20, z: 30)
typedef
// 시그니처
typedef Operation = int Function(int x, int y);
// 더하기
int add(int x, int y) => x + y;
// 사용 (그냥 add 사용하는 것과 똑같이 나옴)
void main() {
Operation operation = add;
int result = operation(10, 20)
}