inblog logo
|
Gyeongwon's blog
    FlutterDart

    [Flutter #3] Row와 Column 위젯

    도경원's avatar
    도경원
    Sep 24, 2025
    [Flutter #3] Row와 Column 위젯
    Contents
    1. Column2. Row3. Row와 Column의 차이 이해하기4. Spacer 위젯5. Row + Column 혼합 사용6. Padding 쉽게 적용하기7. Flutter DevTools 활용8. 정리9. 결론
    플러터에서 화면의 레이아웃을 구성할 때 가장 많이 사용하는 위젯은 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 탭 활용
    위젯이 어떤 크기와 위치를 차지하는지 실시간으로 분석 가능
    notion image
    notion image
    notion image

    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
    Contents
    1. Column2. Row3. Row와 Column의 차이 이해하기4. Spacer 위젯5. Row + Column 혼합 사용6. Padding 쉽게 적용하기7. Flutter DevTools 활용8. 정리9. 결론

    Gyeongwon's blog

    RSS·Powered by Inblog