플러터 공부를 위해 Dart를 배우는데, 소문보다(?) 괜찮은 언어인것 같다. 자바와 자바스크립트 장점을 적절히 가져온듯
# Null safety
- ?: null 가능
- !: null 불가
void main() {
int? couldBeNullButIsnt = 1; // null possible
int a = couldBeNullButIsnt; // error when it's null
List<int?> nullsList; // List itself can be null
List<int?> listThatCouldHoldNulls = [2, null, 4] // List can have null
int b = listThatCouldHoldNulls.first; // error. b can't have null
int b = listThatCouldHoldNulls.first!; // ! -> surely it's not null
int? couldReturnNullButDoesnt() => -3; // null possible
int c = couldReturnNullButDoesnt().abs(); // error c can't have null
int c = couldReturnNullButDoesnt()!.abs(); // surely it's not null
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# Asynchronous
- Future, async: 비동기로 결과값이 Future에 저장되고 다음 프로세스 진행.
- await: 진행중인 프로세스가 끝날때 까지 기다림.
void main() {
printOne();
printTwo();
printThree();
}
void printOne() {
print('One');
}
void printTwo() async {
Future.delayed(Duration(seconds: 1), () {
print('Future!!');
});
print('Two');
}
void printThree() {
print('Three');
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
result
One
Two
Three
Future!!
1
2
3
4
2
3
4
# Widget life cycle
- createState()
- mounted == true
- initState()
- didChangeDependencies()
- setState()
- deactivate()
- dispose()
- mounted == false