2025-10-21
개발하며 새로 알게된 것들
- 위젯 생성자에 const를 쓰는 이유
- Spacer와 GestureDetector
- Column 화면 깨짐
- 플러터 위젯에서의 key
위젯 생성자에 const를 쓰는 이유
- 위젯을 컴파일 타임에 미리 만들어서 성능을 높이기 위해서다
- 이렇게 하면 위젯이 한 번만 생성되고, 빌드가 다시 일어나도 재사용됨
-> 성능 향상
Spacer와 GestureDetector
- Spacer는 공간을 벌리는 역할일 뿐 실체가 없는 위젯
- 따라서
onTap이 적용되지 않는다 - 이때 최상단 위젯에 배경색을 적용해주면 실체를 갖게되어 Spacer 부분을 클릭해도
onTap이 적용
Column 화면 깨짐
Row와 Column은 자식에게 명확한 크기 제한을 주지 않으면
무한한 공간으로 간주하기 때문에 Expanded 등으로 제약을 줘야 한다
- TextField 등 자식이 스스로 사이즈를 정할 수 없는 경우 무한한 크기를 가진다
- 이걸 Column 단독으로 감쌌을 경우에는 줄이 길어지면 화면이 깨진다
- 따라서 자식을 유한한 크기로 만들어 주어야한다
- Expanded는 자식에게 명확한 크기 제약을 부여하는 역할을 한다
Expanded가 하는 일은
“스크린(부모 위젯)의 남은 공간 중 이만큼을 너한테 줄게, 그 높이(너비) 안에서만 크기 정해”
플러터 위젯에서의 key
- 위젯이 위젯트리 상에서 이동을 하는 과정에서
- 위젯의 State를 보존하기 위해 위젯을 유니크하게 식별해주는 역할이다
- 기본적으로 플러터 프레임워크에서 제공해주는 위젯들은 Build Time 에 key를 부여받게 된다