MaterialApp
- Root Widget
- home: main view
• routes, initialRoutes, onGenerateRoutes, ... : navigation, routes
• theme: project theme
• 전체적인 흐름을 다루는 아주 기본적인 위젯
Scaffold
- 유사 ViewController
• AppBar, Body, Navigation, Action...
• 하나의 화면을 구성하기 위한 큰 단위의 위젯








Row, Column
- 가장 기본적인 수직, 수평 레이아웃

Row, Column: Expanded, Flexible

Container: constraints
- BoxConstraints: 제약조건 설정
• minWidth(Height): 위젯의 최소 너비(높이) 지정
• maxWidth(Height): 위젯의 최대 너비(높이) 지정
- minWidth(Height) == maxWidth(Height): 팽팽한 제약
- minWidth(Height) == 0, maxWidth(Height)>1: 느슨한 제약
Center
Align
- 원하는 위치로 정렬
• enum Alignment
• 9개의 방향 설정 가능
• Align(alignment: Alignment.center) == Center()
Stack
• z축의 index를 통해 쌓는 순서를 결정
• alignment: 정렬 방식 결정
• clipBehavior: 경계 밖으로 나갈 때 처리 방식 결정
• fit: 자식의 크기 결정
Stack: Positioned
• Stack의 자식들만 사용할 수 있는 위젯
• top, bottom 조합 또는 left, right 조합은 알고 쓸 것 !
• AutoLayout과 유사. width 또는 height에서 충돌 발생 가능
SizedBox
- 간단한 크기 제어, 공백, 간격
• 자식을 추가하여, 자식의 프레임을 잡는 경우
• 단순히 공백을 넣는 경우
• 위젯 간 간격을 확보하는 경우
- Container는 자식이 없으면 frame이 hidden
- SizedBox는 색상, 테두리, margin, padding 등 설정 불가능
AxisAlignment

- mainAxisAlignment, crossAxisAlignment
• main은 축의 주 방향, cross는 축의 반대 방향
(수직 -> 수평, 수평 -> 수직)
- 주의할 부분
• spaceBetween: 벽에 붙어서 같은 간격
• spaceAround: 벽에서는 반 간격, 위젯 간에는 정 간격
• spaceEvenly: 벽에서부터 같은 간격
생명주기





그외


출처: 큰돌쌤 플러터 스터디