플러터에서 화면의 레이아웃을 구성할 때 가장 많이 사용하는 위젯은
Row
와 Column
입니다.이 두 위젯을 잘 이해하면 복잡한 UI도 손쉽게 설계할 수 있습니다.
1. Column
Column
은 세로 방향(Vertical) 으로 위젯을 배치합니다.각 자식 위젯들은 위에서 아래로 순서대로 쌓입니다.
Column(
children: [
Text('첫 번째 위젯'),
Text('두 번째 위젯'),
Text('세 번째 위젯'),
],
)
📌 사용 예시
- 회원가입 폼 입력 UI
- 세로로 길게 나열되는 뉴스 피드
- 버튼 여러 개를 세로로 배치할 때
2. Row
Row
는 가로 방향(Horizontal) 으로 위젯을 배치합니다.각 자식 위젯들이 왼쪽에서 오른쪽으로 순서대로 배치됩니다.
Row(
children: [
Icon(Icons.home),
Text('홈'),
Icon(Icons.search),
],
)
📌 사용 예시
- 앱 상단의 탭 메뉴
- 하단의 네비게이션 바
- 아이콘과 텍스트를 함께 보여줄 때
3. Row와 Column의 차이 이해하기
플러터에서
Row
와 Column
은 UI의 기본 구조를 결정합니다.두 위젯은 축(Axis) 개념을 기반으로 동작하며, 이를 이해하면 배치가 훨씬 쉬워집니다.
축(Axis) | 설명 | Row 기준 | Column 기준 |
mainAxis (주축) | 위젯이 기본적으로 배치되는 방향 | 가로 방향 | 세로 방향 |
crossAxis (교차축) | 주축에 직교하는 방향 | 세로 방향 | 가로 방향 |
예시를 통해 직관적으로 이해해 봅시다.
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('A'),
Text('B'),
Text('C'),
],
)
결과:
- mainAxisAlignment.center → 가로 방향으로 가운데 정렬
- crossAxisAlignment.start → 세로 방향의 시작점(위쪽)에서 배치
4. Spacer 위젯
Row나 Column 안에서 빈 공간을 유연하게 만들고 싶을 때는
Spacer
를 사용합니다.Row(
children: [
Text('왼쪽'),
Spacer(), // 남는 공간을 차지
Text('오른쪽'),
],
)
결과: 왼쪽과 오른쪽이 양 끝으로 배치됩니다.Spacer
가 중간의 모든 여백을 흡수하기 때문입니다.
5. Row + Column 혼합 사용
복잡한 UI를 만들기 위해
Row
와 Column
을 중첩해서 사용할 수 있습니다.Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('왼쪽'),
Text('오른쪽'),
],
),
SizedBox(height: 20), // 간격 추가
Text('아래에 위치하는 텍스트'),
],
)
⚠ 주의점
Row
와Column
을 함께 사용할 때는 전체 화면을 꽉 채우는 위젯을 넣어주지 않으면,
예상치 못한 정렬 문제가 발생할 수 있습니다.
- 이럴 땐
Expanded
나Flexible
을 고려하세요.
6. Padding 쉽게 적용하기
플러터에서
Padding
을 빠르게 추가/제거하려면 단축키를 활용하세요.- 맥(Mac):
Option + Enter
- 윈도우:
Alt + Enter
예시
Padding(
padding: const EdgeInsets.all(8.0),
child: Text('Padding 적용'),
)
Option + Enter → Wrap with Padding 선택반대로 제거할 때도Option + Enter
→Remove this widget
선택
7. Flutter DevTools 활용
Flutter DevTools를 사용하면 UI의 배치 문제를 직관적으로 확인할 수 있습니다.
특히
Row
와 Column
의 공간 차지 비율을 시각적으로 확인하기 좋습니다.Flutter DevTools 실행 → Layout Inspector 탭 활용위젯이 어떤 크기와 위치를 차지하는지 실시간으로 분석 가능



8. 정리
- Row → 가로 방향 배치
- Column → 세로 방향 배치
- mainAxis와 crossAxis를 이해해야 레이아웃 설계 가능
Spacer
로 가변 여백 처리
- 복잡한 레이아웃은
Row
+Column
중첩
- 단축키로
Padding
쉽게 적용/삭제
- Flutter DevTools로 시각적으로 디버깅
9. 결론
Row
와 Column
은 Flutter UI의 뼈대입니다.이 두 가지를 완벽히 이해하면 이후의 복잡한 레이아웃 설계가 훨씬 수월해집니다.
Next Step:
Expanded
와Flexible
을 활용한 공간 분배
Stack
위젯으로 겹치는 UI 만들기
Align
과Positioned
로 정밀 배치
Share article