[Flutter] Row and Column
2022. 10. 13. 12:22ㆍ프로그래밍 언어/Flutter
mainAxis는 위젯의 기본 방향에 대한 속성이고, crossAxis는 반대방향에 대한 속성이다.
기본 수직으로 정렬되는 Column은 세로가 mainAxis, 가로가 crossAxis가 되며,
기본 수평으로 정렬되는 Row는 가로가 mainAxis, 세로가 crossAxis가 된다.
MainAxisAlignment 사용법
mainAxisAlignment: MainAxisAlignment.center
enum | Row (좌우) | Column (상하) |
center | 가로 가운데정렬 | 세로 가운데 정렬 |
start | 왼쪽 정렬 | 위쪽 정렬 |
end | 오른쪽 정렬 | 아래쪽 정렬 |
spaceEvenly | child 위젯이 균등하게 배치되고, 위젯사이의 여백 크기만큼 양 옆에 여백이 생김. | |
spaceAround | child 위젯이 균등하게 배치되고, 위젯사이의 여백크기 절반만큼 양옆 여백이 생김. | |
spaceBetween | child 위젯이 균등하게 배치되지만, 양 옆에는 여백이 생기지 않음. |
축 정렬할때 아래처럼 전체 배경을 기준으로 해야 한다.
why?
아무리 정렬을 해도 왼쪽에 다 붙어있는걸로 보이므로, 아래처럼 전체 휴대폰 사이즈를 가져와서 적용한다.
// 전체 휴대폰 사이즈를 가져와서 적용
// Column 조작할때
width : MediaQuery.of(context).size.width,
// Row 조작할때
height : MediaQuery.of(context).size.height,
코드 | width : MediaQuery.of(context).size.width | height : MediaQuery.of(context).size.height, |
적용 화면 | ![]() |
![]() |
CrossAxisAlignment 사용법
crossAxisAlignment : CrossAxisAlignment.center
enum | Row (상하) | Column (좌우) |
center | 세로 가운데정렬 | 가로 가운데 정렬 |
start | 위쪽 정렬 | 왼쪽 정렬 |
end | 아래쪽 정렬 | 오른쪽 정렬 |
strech | 세로 가득 채움(설정된 size무시) | 가로 가득 채움(설정된 size무시) |
baseline | 설정한 textBaseLine에 맞춰 정렬 |
mainAxisSize : 주축의 크기를 결정한다.
mainAxisSize : MainAxisSize.max
max: 최대
min : 최소
mainxAxisSize | Row | Column |
MainAxisSize.max | ![]() |
![]() |
MainAxisSize.min | ![]() |
![]() |
Expanded / Flexible
주의 : Row 와 Column 의 children에만 사용가능
Expanded : 최대한으로 남아있는 사이트를 차지한다. 여러개에 넣으면 나눠서 차지한다.
사용법:
// red에만 적용 코드
children:[
Expanded(
child: Container(
color: Colors.red,
width: 50.0,
height: 50.0,
),
),
Container(
color: Colors.oranage,
width: 50.0,
height: 50.0,
),
Container(
color: Colors.yellow,
width: 50.0,
height: 50.0,
),
Container(
color: Colors.green,
width: 50.0,
height: 50.0,
),
]
기본 | red에만 적용 | red,orange에만 적용 | red,orange,yellow에만 적용 | 모두 적용 |
![]() |
![]() |
![]() |
![]() |
![]() |
Expanded(
flex: 2,
child: Container(
color: Colors.red,
width: 50.0,
height: 50.0,
),
flex 파라미터는 기본값 1
: 나머지 공간을 나눠 먹는 비율
Flexible 이 비율만큼 공간 차지 후 child 안의 위젯이 공간을 차지 안하면 공간을 버려버린다.
'프로그래밍 언어 > Flutter' 카테고리의 다른 글
Flutter IOS / android에서 http 사용 설정법 (0) | 2022.10.18 |
---|---|
WebView 사용법 (0) | 2022.10.17 |
INSTALL_FAILED_INSUFFICIENT_STORAGE 해결법 (0) | 2022.10.10 |
Dart 4 비동기 프로그래밍 (0) | 2022.10.03 |
Dart 3 함수형 프로그래밍 (0) | 2022.10.03 |