Dart 문법

플러터 공부를 위해 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

# 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

result

One
Two
Three
Future!!
1
2
3
4

# Widget life cycle

  1. createState()
  2. mounted == true
  3. initState()
  4. didChangeDependencies()
  5. setState()
  6. deactivate()
  7. dispose()
  8. mounted == false