프로젝트에서 보기 →

Flutter 입문. 안드로이드, iOS 개발을 한 번에 #17 Row

태그
기술 안드로이드 Flutter iOS
시작일
종료일
수정일

https://www.youtube.com/watch?v=HgqnEs-idsw

1. 이건 꼭 알아야 한다^1

[? 질문] Column을 이미 써봤다면, Row는 무엇이며 어떻게 이해하면 되는가^1
[= 답] Row는 Column과 구조/코드가 거의 완전히 동일하고, 단지 정렬 방향(축)만 바뀐 것으로 이해하면 된다(세로 → 가로).^4

[? 질문] Row에서 mainAxis / crossAxis 정렬은 각각 무엇을 의미하는가^9
[= 답] Row에서는 mainAxis가 가로(오른쪽 방향) 정렬, crossAxis가 세로(아래 방향) 정렬을 의미한다.^9

[? 질문] Row와 Column을 배치할 때 가장 주의할 점은 무엇인가^10
[= 답] Row/Column마다 “내가 의미하는 방향(축)”이 달라지므로, mainAxis/crossAxis가 가리키는 방향이 위젯에 따라 바뀐다는 점만 주의하면 되고, 나머지는 동일하다.^10


2. 큰 그림^2

이 콘텐츠는 Flutter 레이아웃 위젯 중 Row를 소개하면서, 이미 학습했을 Column과의 관계를 “대칭 개념”으로 설명한다.^2 Row/Column의 내부 구성(자식 위젯들을 나열하는 방식)은 같고, 달라지는 것은 정렬 축의 방향 해석이라는 점을 강조한다.^4

  • Row는 Column과 같은 패턴으로 사용하며, 단지 배치 방향이 바뀐 것이다.^4
  • 자식 위젯을 넣는 방식이 동일하므로 Row/Column을 조합하면 원하는 레이아웃을 만들 수 있다.^7
  • Row에서 mainAxis/crossAxis의 방향 의미(가로 vs 세로)가 Column과 달라지므로 그 점만 주의하면 된다.^10

3. 하나씩 살펴보기^3

3.1 Column을 했으면 Row도 “비슷한 것”이라는 전제^1

📸 0:01

화자는 “컬럼(Column)을 써 봤으니까 로우(Row)도 비슷하겠죠”라고 말하며, Row 학습이 Column 학습의 연장선에 있다는 전제를 먼저 깐다.^1 여기서 핵심은 Row를 새로운/낯선 개념으로 쌓기보다, Column에서 이미 익힌 사고방식을 반대로 적용하면 된다는 안내다.^2

즉, Row를 이해하기 위해 새로운 규칙을 대량으로 외우는 것이 아니라, Column에서 익힌 구조를 그대로 가져오되 “방향만 전환”하라는 방식으로 설명을 시작한다.^4

3.2 Row는 오른쪽으로 쭉 정렬되는 형태, 코드도 “완전 똑같다”^3

📸 0:05

화자는 Row를 “오른쪽으로 쭉 정렬되는” 방식이라고 묘사한다.^3 이는 Row가 기본적으로 가로 방향으로 자식들을 나열한다는 직관적 표현이다.^3

이어 “코드 보면 완전히 똑같죠”, “완전 똑같습니다”라고 반복해서 말한다.^4 이 반복은 Row와 Column의 사용 경험을 연결하기 위한 장치로, 다음과 같은 메시지를 강화한다:

  • Row와 Column은 API 사용 패턴이 동일하다.^4
  • 달라진 것은 “방향만 바뀌었다”는 해석이다.^6

즉, Row를 배울 때의 심리적 장벽(새로 외워야 한다는 부담)을 낮추기 위해, “완전히 똑같다”를 여러 번 강조한다.^5

[!IMPORTANT] “방향만 바뀌었다”라는 모델로 이해하기^6
Row/Column은 레이아웃 구성 방식이 같고, 자식 위젯을 나열하는 축만 다르다고 생각하라고 한다.^6

3.3 Row/Column 모두 “안에 위젯들이 하나씩 들어간다” (children 나열) ^7

📸 0:19

화자는 Row 내부에 “위젯들이 하나씩 들어가는 거죠”라고 설명한다.^7 이는 Row가 여러 개의 자식 위젯을 받아서 일렬로 배치한다는 구조를 말로 풀어낸 것이다.^7 또한 “똑같습니다… 위젯들 넣는거”라고 다시 한 번 Row/Column의 동일성을 반복한다.^8

  • Row와 Column은 모두 자식 위젯들을 컨테이너 안에 넣어 배치하는 방식이다.^7
  • 따라서 Row를 새로 배운다기보다, Column에서 하던 “위젯 넣기”를 가로 버전으로 적용하면 된다.^6

3.4 Row와 Column의 조합으로 원하는 레이아웃을 만든다^7

📸 0:19

화자는 Row/Column의 조합을 “잘 사용하시면 내가 원하는 레이아웃으로 만들 수가 있겠죠”라고 말한다.^7 이는 Flutter 레이아웃의 기본 빌딩 블록으로서 Row와 Column이 자주 함께 쓰인다는 점을 강조하는 대목이다.^7

여기서의 논리는 다음 흐름을 가진다:

  1. Row와 Column은 구조가 동일하다.^4
  2. 방향만 다르다(세로/가로).[^^6]
  3. 따라서 둘을 조합하면 2차원 레이아웃(가로+세로)을 구성할 수 있다.^7

+++ 상세 예시(콘텐츠가 암시하는 조합 방식)

  • 화면을 세로로 쌓는 큰 틀은 Column으로 만들고
  • 그 안에서 특정 행은 Row로 만들어 버튼/아이콘/텍스트를 가로로 나열하는 식으로
    “내가 원하는 레이아웃”을 구성할 수 있다는 맥락이다.^7 +++

(영상은 구체 UI 예시를 실제로 나열하진 않지만, “Row+Column 조합”의 일반적 용도를 명확히 지시한다.)^7

3.5 Row에서 mainAxis / crossAxis 의미: 가로(오른쪽) vs 세로(아래) 정렬^9

📸 0:30

화자는 “여기서는 누운(가로로 누운) 오른쪽으로 가는 건데”라고 말하며 Row의 기본 축이 가로임을 다시 상기시킨다.^9 이어서 정렬 축 개념을 다음처럼 정리한다:

  • mainAxis: “오른쪽 방향에 대한 정렬”^9
  • crossAxis: “아래(세로) 방향에 대한 정렬”^9

즉 Row에서는,

  • mainAxis가 가로축(좌↔우)
  • crossAxis가 세로축(위↕아래)
    를 의미한다는 설명이다.^9

[!TIP] Row에서 축 해석을 헷갈리지 않는 방법^9
Row는 “가로로 눕혀진 배치”이므로 mainAxis는 가로, crossAxis는 세로로 대응시킨다.^9

3.6 Row와 Column마다 “내가 의미하는 방향이 달라진다”는 주의사항^10

📸 0:39

마지막으로 화자는 Row와 Column을 각각 사용할 때 “의미하는 방향이 달라지니까 그것만 주의하시면 될 거 같아요”라고 당부한다.^10 즉, 속성 이름(mainAxis, crossAxis)은 같지만, 위젯이 Row인지 Column인지에 따라 그 축이 화면에서 가리키는 방향이 달라진다.^10

  • Row: mainAxis=가로, crossAxis=세로^9
  • (대칭적으로) Column은 그 반대 방향 해석을 가지는 맥락으로 연결된다.^2

그리고 결론은 “나머진 똑같습니다”로 마무리되며, Row 학습의 핵심이 “축 방향만 조심하면 된다”는 데 있음을 재차 확정한다.^11

c Row는 Column과 사용법은 동일하고, mainAxis/crossAxis의 ‘방향 해석’만 바뀐다는 점이 이 영상의 결론이다.


4. 핵심 통찰^4

  1. Row/Column을 각각 별개로 외우기보다, 동일한 구조 + 방향 전환으로 모델링하면 학습 비용이 크게 줄어든다.^6
  2. 레이아웃 구성의 본질은 “위젯을 넣는 방식(children 나열)”이며, Row/Column은 그 표현이 가로/세로로 달라질 뿐이다.^7
  3. 실전에서 가장 많이 헷갈리는 지점은 속성명이 아니라, mainAxis/crossAxis가 실제 화면에서 어느 방향을 뜻하는지라는 “해석” 문제다.^9
    • Row에서 정렬을 맞출 때는 mainAxis=가로, crossAxis=세로로 먼저 고정해서 생각한다.^9
    • Row/Column을 섞어 쓰는 레이아웃에서는 “현재 내가 쓰는 위젯이 Row인지 Column인지”를 기준으로 축 방향을 재확인한다.^10

5. 헷갈리는 용어 정리^9

  • Row: 자식 위젯들을 가로 방향으로 나열하는 레이아웃 위젯.^3
  • Column: (이 영상에서는 직접 정의를 길게 하진 않지만) Row와 대칭이며, 자식 위젯들을 세로 방향으로 나열하는 레이아웃 위젯이라는 전제를 둔다.^1
  • mainAxis: Row/Column에서 “주축” 정렬. Row에서는 가로(오른쪽 방향) 정렬을 뜻한다고 설명한다.^9
  • crossAxis: 주축과 직교하는 “교차축” 정렬. Row에서는 세로(아래 방향) 정렬을 뜻한다고 설명한다.^9


참고(콘텐츠 정보)^1

  • 제목: Flutter 입문. 안드로이드, iOS 개발을 한 번에 #17 Row^1
  • 채널: 오준석의 생존코딩^1
  • 길이: 0분 51초^1
  • 링크: https://www.youtube.com/watch?v=HgqnEs-idsw^1

← 프로젝트에서 보기