inblog logo
|
DailyCoding
    Flutter

    5. Flutter 핵심 위젯 정리

    박은서's avatar
    박은서
    Apr 29, 2026
    5. Flutter 핵심 위젯 정리
    Contents
    1. 레이아웃 (UI 구조의 뼈대)1️⃣ Column / Row2️⃣ Expanded / Flexible3️⃣ Container4️⃣ SizedBox5️⃣ Padding2. 스크롤 & 리스트1️⃣ ListView2️⃣ SingleChildScrollView3. 텍스트 & 입력1️⃣ Text2️⃣ TextField4. 버튼 & 인터랙션1️⃣ ElevatedButton2️⃣ GestureDetector5. 화면 구조1️⃣ Scaffold2️⃣ AppBar6. 정렬 & 위치1️⃣ Center / Align2️⃣ Stack🔥 핵심 요약 (이건 반드시 기억)

    1. 레이아웃 (UI 구조의 뼈대)

    Flutter는 거의 전부가 레이아웃 싸움이다. 이걸 못하면 아무것도 못 만든다.

    1️⃣ Column / Row

    1) 개념

    • Column → 세로 배치
    • Row → 가로 배치

    2) 핵심 옵션

    옵션
    역할
    언제 쓰는지
    children
    위젯 리스트
    필수
    mainAxisAlignment
    주축 정렬
    가운데, 끝 정렬
    crossAxisAlignment
    반대축 정렬
    텍스트/박스 정렬
    mainAxisSize
    크기 (min/max)
    꽉 채울지 여부

    3) 예시

    Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text("A"), Text("B"), ], )

    4) 핵심 포인트 (중요)

    • Column은 세로로 무한히 늘어나려고 함 → overflow 발생
    • 그래서 반드시 아래 중 하나 필요:
      • Expanded
      • Flexible
      • SingleChildScrollView

    2️⃣ Expanded / Flexible

    1) 개념

    • 남은 공간을 비율로 나눠 먹는 위젯

    2) 옵션

    옵션
    역할
    flex
    비율 (1, 2, 3…)

    3) 예시

    Row( children: [ Expanded(flex: 1, child: Container(color: Colors.red)), Expanded(flex: 2, child: Container(color: Colors.blue)), ], )

    4) 언제 쓰냐

    • 화면 꽉 채우기
    • 반응형 레이아웃

    3️⃣ Container

    1) 개념

    • 박스 UI (padding, margin, 색, 크기 등)

    2) 핵심 옵션

    옵션
    역할
    width / height
    크기 지정
    padding
    내부 여백
    margin
    외부 여백
    decoration
    색, border, radius
    alignment
    내부 정렬

    3) 예시

    Container( width: 100, height: 100, padding: EdgeInsets.all(10), decoration: BoxDecoration( color: Colors.blue, borderRadius: BorderRadius.circular(10), ), )

    4) 주의

    • 단순 스타일만이면 Container 대신 Padding, SizedBox로 분리하는 게 더 명확

    4️⃣ SizedBox

    1) 개념

    • 크기 지정 or 간격용

    2) 사용

    SizedBox(height: 20)

    3) 언제 쓰냐

    • margin 대신 spacing
    • 고정 크기

    5️⃣ Padding

    4) 개념

    • 내부 여백 전용 위젯
    Padding( padding: EdgeInsets.all(16), child: Text("Hello"), )

    2. 스크롤 & 리스트

    1️⃣ ListView

    1) 개념

    • 스크롤 가능한 리스트

    2) 옵션

    옵션
    역할
    children
    정적 리스트
    builder
    동적 리스트 (성능 좋음)
    scrollDirection
    방향
    itemCount
    개수

    3) 예시 (실무)

    ListView.builder( itemCount: 100, itemBuilder: (context, index) { return Text("Item $index"); }, )

    4) 핵심

    • 대부분 builder 사용
    • 대량 데이터 → builder 필수

    2️⃣ SingleChildScrollView

    1) 개념

    • 전체를 스크롤 가능하게
    SingleChildScrollView( child: Column(...) )

    2) 언제 쓰냐

    • Column overflow 해결
    • 폼 화면

    3. 텍스트 & 입력

    1️⃣ Text

    1) 개념

    • 텍스트 출력

    2) 옵션

    옵션
    역할
    style
    폰트
    textAlign
    정렬
    overflow
    넘칠 때 처리

    2️⃣ TextField

    1) 개념

    • 사용자 입력

    2) 핵심 옵션

    옵션
    역할
    controller
    값 제어
    decoration
    UI
    onChanged
    입력 이벤트
    obscureText
    비밀번호

    3) 예시

    TextField( controller: TextEditingController(), decoration: InputDecoration( labelText: "이메일", border: OutlineInputBorder(), ), )

    4) 핵심 포인트

    • 입력값 관리 → controller 필수

    4. 버튼 & 인터랙션

    1️⃣ ElevatedButton

    1) 개념

    • 기본 버튼

    2) 옵션

    옵션
    역할
    onPressed
    클릭 이벤트
    child
    내부 위젯
    ElevatedButton( onPressed: () {}, child: Text("클릭"), )

    2️⃣ GestureDetector

    1) 개념

    • 모든 터치 이벤트 감지

    2) 옵션

    옵션
    역할
    onTap
    클릭
    onLongPress
    길게 누름
    GestureDetector( onTap: () {}, child: Container(...) )

    3) 언제 쓰냐

    • 버튼이 아닌 UI 클릭 처리

    5. 화면 구조

    1️⃣ Scaffold

    1) 개념

    • 앱 화면 기본 틀

    2) 옵션

    옵션
    역할
    appBar
    상단 바
    body
    본문
    floatingActionButton
    버튼
    drawer
    사이드 메뉴
    Scaffold( appBar: AppBar(title: Text("제목")), body: Center(child: Text("내용")), )

    2️⃣ AppBar

    1) 개념

    • 상단 네비게이션

    2) 옵션

    옵션
    역할
    title
    제목
    actions
    오른쪽 버튼

    6. 정렬 & 위치

    1️⃣ Center / Align

    1) 개념

    • 위치 조정
    Center(child: Text("중앙"))
    Align( alignment: Alignment.topRight, child: Text("오른쪽 위"), )

    2️⃣ Stack

    1) 개념

    • 겹치기 UI

    2) 옵션

    옵션
    역할
    children
    위젯 리스트
    Positioned
    위치 지정
    Stack( children: [ Container(color: Colors.red), Positioned( top: 10, left: 10, child: Text("위에 표시"), ) ], )

    🔥 핵심 요약 (이건 반드시 기억)

    1. 레이아웃 핵심 4개

    • Column / Row
    • Expanded
    • Container
    • SizedBox

    2. 실전 필수 패턴

    • 스크롤 → ListView.builder
    • 입력 → TextField + controller
    • 화면 → Scaffold

    3. 초보가 가장 많이 틀리는 것

    • Column overflow
    • Expanded 안 쓰고 레이아웃 깨짐
    • ListView 성능 문제 (children 남용)
    Share article
    Contents
    1. 레이아웃 (UI 구조의 뼈대)1️⃣ Column / Row2️⃣ Expanded / Flexible3️⃣ Container4️⃣ SizedBox5️⃣ Padding2. 스크롤 & 리스트1️⃣ ListView2️⃣ SingleChildScrollView3. 텍스트 & 입력1️⃣ Text2️⃣ TextField4. 버튼 & 인터랙션1️⃣ ElevatedButton2️⃣ GestureDetector5. 화면 구조1️⃣ Scaffold2️⃣ AppBar6. 정렬 & 위치1️⃣ Center / Align2️⃣ Stack🔥 핵심 요약 (이건 반드시 기억)

    DailyCoding

    RSS·Powered by Inblog