728x90
🧩 Flutter UI의 핵심 철학 : 모든 것이 위젯이다!
Flutter를 처음 접하면 가장 먼저 듣게 되는 말이 있습니다.
“ Flutter는 모든 것이 위젯이다! ”
Flutter에서 UI를 구성하는 모든 요소는 위젯(Widget) 입니다.
그 예시를 볼까요?
요소 | Flutter에서의 위젯 |
---|---|
버튼 | ElevatedButton |
텍스트 | Text |
이미지 | Image |
정렬 | Row, Column |
레이아웃 여백 | Padding, SizedBox |
페이지 구조 | Scaffold, AppBar |
심지어 Padding, Margin, 애니메이션도 전부 위젯입니다!
🧱 위젯의 종류: Stateless vs Stateful
유형 | 설명 | 대표 예시 |
---|---|---|
StatelessWidget | 상태를 가지지 않음 | Text, Icon, Row |
StatefulWidget | 상태 변화가 있음 | TextField, Switch, Scaffold 등 |
- StatelessWidget : 값이 변하지 않는 정적인 화면 요소
- StatefulWidget : 입력에 따라 바뀌는 동적인 화면 요소
화면에 입력창이나 버튼처럼 상호작용이 필요하다면 StatefulWidget이 쓰입니다.
🎯 UI는 어떻게 구성할까?
Flutter는 XML이나 Storyboard 없이, 코드로 UI를 직접 구성합니다.
즉, 위젯들을 조합하고 중첩하여 트리 구조(Tree) 를 만드는 방식입니다.
💡 예제 코드
Scaffold(
appBar: AppBar(title: Text('Hello')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Welcome!'),
ElevatedButton(
onPressed: () {
print('Clicked!');
},
child: Text('Click'),
),
],
),
),
);
- Scaffold는 페이지 전체 레이아웃을 담당
- Scaffold는 Material Design의 시각적 Layout 구조를 표현함.
- AppBar, Text, Button 모두 위젯
- Center, Column은 레이아웃을 배치하는 위젯
이런 식으로 위젯 안에 또 다른 위젯이 들어가는 구조로 UI가 만들어집니다.
728x90
반응형