SizedBox
- 역할
- 자식 위젯의 크기를 지정
- 위젯 사이의 공간을 생성
- 크기가 지정된 자식 위젯이 있으면 자식 위젯의 크기에 맞춰진다.
- 자식 위젯이 없거나 width나 height를 지정하지 않으면 각각 기본 값으로 double.infinity를 가지며,
부모 위젯의 최대 크기를 갖게 된다. - 참고
Container
- 역할
- 자식 위젯의 크기를 지정
- 앱 내의 영역끼리 구분하는 요도
- 크기가 지정된 자식 위젯이 있으면 자식 위젯의 크기에 맞춰진다.
- 자식 위젯이 없거나 width나 height를 지정하지 않으면 각각 기본 값으로 double.infinity를 가지며,
부모 위젯의 최대 크기를 갖게 된다. - 참고
Row
- 역할
- 내부의 위젯 목록을 가로로 정렬하기 위한 위젯
- 주로 사용하는 속성
- mainAxisAlignment (가로 정렬 기준)
- MainAxisAlignment.start
- MainAxisAlignment.center
- MainAxisAlignment.end
- MainAxisAlignment.spaceBetween
- 첫번째 위젯과 마지막 위젯을 양끝에 배치한다.
- 나머지 영역을 아직 배치되지 않은 위젯의 개수에 비례하여 균등하게 배분한다.
- MainAxisAlignment.spaceAround
- 위젯 간의 간격을 균등하게 배분한다.
- 첫번째 위젯과 마지막 위젯에는 균등하게 배분된 영역의 절반만큼씩 배분한다.
- 위젯이 n개 있고, 위젯 간의 거리가 x일때,
간격의 합은 0.5 * x + (n - 1) * x + 0.5 * x가 된다.
- MainAxisAlignment.spaceEvenly
- 위젯 간의 간격을 균등하게 배분한다.
- 위젯의 순번과 관계 없이 모든 위젯의 앞뒤로 간격을 배분한다.
- crossAxisAlignment (세로 정렬 기준)
- CrossAxisAlignment.start
- CrossAxisAlignment.center
- CrossAxisAlignment.end
- CrossAxisAlignment.stretch
- 자식 위젯의 height 속성을 무시하고 부모 위젯의 최대 세로 길이 값을 갖게 한다.
- CrossAxisAlignment.baseline
- 베이스 라인을 기준으로으로 정렬한다.
- textBaseline과 함께 쓴다.
- mainAxisSize (Row 위젯이 차지하는 범위)
- MainAxisSize.max
- MainAxisSize.min
- 기본 값
- mainAxisAlignment
- crossAxisAlignment
- CrossAxisAlignment.center
- mainAxisSize
- 참고
Column
- 역할
- 내부의 위젯 목록을 세로로 정렬하기 위한 위젯
- 주로 사용하는 속성
- mainAxisAlignment (세로 정렬 기준)
- MainAxisAlignment.start
- MainAxisAlignment.center
- MainAxisAlignment.end
- MainAxisAlignment.spaceBetween
- 첫번째 위젯과 마지막 위젯을 양끝에 배치한다.
- 나머지 영역을 아직 배치되지 않은 위젯의 개수에 비례하여 균등하게 배분한다.
- MainAxisAlignment.spaceAround
- 위젯 간의 간격을 균등하게 배분한다.
- 첫번째 위젯과 마지막 위젯에는 균등하게 배분된 영역의 절반만큼씩 배분한다.
- 위젯이 n개 있고, 위젯 간의 거리가 x일때,
간격의 합은 0.5 * x + (n - 1) * x + 0.5 * x가 된다.
- MainAxisAlignment.spaceEvenly
- 위젯 간의 간격을 균등하게 배분한다.
- 위젯의 순번과 관계 없이 모든 위젯의 앞뒤로 간격을 배분한다.
- crossAxisAlignment (가로 정렬 기준)
- CrossAxisAlignment.start
- CrossAxisAlignment.center
- CrossAxisAlignment.end
- CrossAxisAlignment.stretch
- 자식 위젯의 width 속성을 무시하고 부모 위젯의 최대 가로 길이 값을 갖게 한다.
- CrossAxisAlignment.baseline
- 베이스 라인을 기준으로으로 정렬한다.
- textBaseline과 함께 쓴다.
- mainAxisSize (Row 위젯이 차지하는 범위)
- MainAxisSize.max
- MainAxisSize.min
- 참고
Expanded
- 역할
- Row/Column/Flex의 남는 영역을 채우는 위젯
- 특징
- 자식 위젯이 부모 위젯보다 크거나 작거나에 관계 없이 항상 최대 사이즈로 확장된다.
- 주로 사용하는 속성
- child
- 자식 위젯을 지정한다.
- 자식 위젯은 크기 관련 속성이 무시되고 Expanded 위젯이 차지하는 범위만큼의 크기를 가지게 된다.
- Row의 경우에는 자식 위젯의 width 속성이, Column의 경우에는 height 속성이 무시된다.
- flex
- n개의 Expanded 위젯이 존재할 때, 그 비율을 나타낸다.
- 2개의 Expanded 위잿이 있고 각각 flex 속성으로 1과 2라는 값을 가지고 있다면,
각 위젯의 넓이의 비율은 1:2가 된다. - 기본 값 : 1
- 참고
Flexible
- 역할
- Row/Column/Flex의 남는 영역을 채우는 위젯
- 특징
- 자식 위젯이 부모 위젯보다 큰 경우
- 부모 위젯의 크기에 맞게 최대 사이즈로 확장된다.
- 자식 위젯이 부모 위젯보다 작은 경우
- 주로 사용하는 속성
- child
- 자식 위젯을 지정한다.
- 자식 위젯은 크기 관련 속성이 무시되고 Flexible 위젯이 차지하는 범위만큼의 크기를 가지게 된다.
- Row의 경우에는 자식 위젯의 width 속성이, Column의 경우에는 height 속성이 무시된다.
- flex
- n개의 Flexible 위젯이 존재할 때, 그 비율을 나타낸다.
- 2개의 Flexible 위잿이 있고 각각 flex 속성으로 1과 2라는 값을 가지고 있다면,
각 위젯의 넓이의 비율은 1:2가 된다. - 기본 값 : 1
- fit
- 자식 위젯이 차지하는 범위를 지정한다.
- 종류
- FlexFit.tight
- 자식 위젯의 크기를 무시하고 남는 영역을 차지한다.
- FlexFit.loose
- 기본 값 : FlexFit.loose
- 참고
Align
- 역할
- 자체적으로 하위 항목을 정렬하고 선택적으로 하위 크기에 따라 크기를 조정한다.
- 주로 사용하는 속성
- alignment
- 자식 위젯을 정렬하는 방법
- 종류
- Alignment.topLeft
- Alignment.topCenter
- Alignment.topRight
- Alignment.centerLeft
- Alignment.center
- Alignment.centerRight
- Alignment.bottomLeft
- Alignment.bottomCenter
- Alignment.bottomRight
- 기본 값 : Alignment.center
Alignment(0.5,-0.75)
처럼 직접 비율을 설정할 수도 있다.
- 참고
Center
- 역할
- 자식 위젯을 부모 위젯의 정중앙에 위치하게 한다.
- 참고
Padding
- 부모 위젯의 내부에 지정한 만큼의 여백을 추가한다.
- 여백 지정 방법
- EdgeInsets.all(double value)
- EdgeInsets EdgeInsets.only()
- top/bottom/left/right 속성을 통해 상/하/좌/우에 대한 각각의 여백을 추가할 수 있다.
- 각 속성의 기본 값은 0.0이다.
- EdgeInsets.zero
- EdgeInsets.fromLTRB(left, top, right, bottom)
- 좌상우하 순서대로 여백을 지정한다.
- 여백이 없는 방향의 경우에도 0으로 지정해줘야 한다.
- EdgeInsets.symmetric()
- vertical/horizontal 속성을 통해 상하/좌우에 대한 각각의 여백을 추가할 수 있다.
- 각 속성의 기본 값은 0.0이다.
- 참고
Stack
- 역할
- 부모 위젯의 가장자리를 기준으로 자식 위젯들을 겹치게 배치한다.
- 텍스트나 이미지를 그라디언트로 오버레이하는 등의 작업에 유용하다.
- 참고