Flutter에서는 모든 것이 위젯입니다 — UI 요소(버튼, 텍스트, 이미지), 레이아웃 구조(행, 열, 패딩), 심지어 앱 자체도 모두 위젯입니다. 위젯은 조합되어 전체 사용자 인터페이스를 구성하는 불변(immutable)의 구성 요소입니다.
모든 것이 위젯
위젯은 UI를 기술합니다. 모든 것이 위젯입니다:
→ 보이는 요소: Text, Image, Icon, Button 등
→ 레이아웃: Row, Column, Container, Padding, Center, Stack 등
→ 구조: Scaffold(페이지 구조), AppBar 등
→ 심지어 앱 자체(MaterialApp)와 추상적인 것들(Padding, Theme)도 포함
→ 위젯을 트리로 COMPOSE하여 UI를 만듭니다(위젯이 다른 위젯을 포함).
위젯을 트리로 조합하기
// 위젯을 NESTING(중첩)하여 UI 구성 (조합)
Scaffold( // 페이지 구조
appBar: AppBar(title: Text('Home')), // 텍스트가 있는 앱 바
body: Center( // 자식을 중앙 정렬
child: Column( // 세로 레이아웃
children: [
Text('Hello'), // 텍스트 위젯
ElevatedButton( // 버튼
onPressed: () {},
child: Text('Click'),
),
],
),
),
)
// → WIDGET TREE: Scaffold > Center > Column > [Text, Button]
