Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- sw expert academy
- Crossfit
- D1
- BOJ
- 회전하는큐
- spring boot
- 그리디
- 브루트포스
- 15353
- DP
- 15662
- 재귀
- BOJ14889
- 서울에서경산까지
- 크로스핏
- C++
- 26008
- 스택
- 백준
- Python
- 14863
- 1로만들기2
- 재귀함수
- dart
- 동적프로그래밍
- 4811
- 삼성
- 해시해킹
- Flutter
- 1781
Archives
- Today
- Total
곧죽어도 콛잉
[Flutter] 플러터의 Const Constructor 본문
우선 Const Constructor를 이해하려면, Stateful Widget의 라이프 사이클을 알아야한다. (추후 자세히 설명 예정)
기본적으로 Stateful Widget에서 State 내부에서 setState를 실행하게 되면, build를 반드시 실행하게 된다.
다음의 코드들은 build 함수 내부에 있는 Widget들이다.
const TestWidget(label: 'test1'), // const. buildTime, runTime을 모두 알 수 있을 때 사용 가능
TestWidget(label: 'test2'),
ElevatedButton( // const 사용 불가!!
onPressed: () {
setState(() {
}); // 빌드만 새로 실행
},
child: const Text('build!'), // const 사용가능
),
1) ElevatedButton를 클릭하면, onPressed에 의해 setState를 호출한다.
2) 호출된 setState에 의해 build가 실행된다.
3) 실행된 build에 의해 build 함수 내부의 Widget들 모두 build를 실행한다.
따라서 프로젝트가 커질수록 setState에 의해 그대로 있어도 되는 위젯들도 계속 새롭게 build를 하여,
리소스를 굉장히 잡아먹는다.
따라서 이 문제를 해결하기 위해 const를 사용할 수 있다.
위 코드를 보면 const를 붙인 TestWidget이 있다. 이 상태에서 ElevatedButton을 클릭한다면, const로 선언된 TestWidget은 새롭게 build하지 않고 그대로 두지만, const가 없는 TestWidget은 build를 한다.
즉, const를 통해 build 실행을 최소화하여 더 효율적으로 프로그램을 제작할 수 있다.
하지만 const에는 주의사항이 있다. 반드시 buildtime과 runtime을 확실히 아는 상황에서만 사용할 수 있다는 것이다.
ElevatedButton처럼 언제 눌리고 실행될지 알 수 없는 위젯에서는 사용이 불가하다!!
(단, 위젯 내부에 있는 Text의 경우 변하지 않고 항상 존재하기 때문에 const를 사용해줄 수 있다.)
'Programming > Flutter & Dart' 카테고리의 다른 글
[Flutter] 한눈에 보기 좋게 코드 정리하기 (0) | 2023.02.17 |
---|---|
[Flutter] Dart의 Map 함수 응용해서 이미지 여러 개 출력하기 (0) | 2023.02.17 |
[Dart] DateTime / Duration (날짜/기간 구하기) (0) | 2023.02.16 |
Comments