Flutter에서 위젯(widget)이란 무엇인지 설명해주세요
질문
Flutter에서 위젯(widget)이란 무엇인지 설명해주세요.
답변
Flutter에서 위젯(Widget)은 UI를 구성하는 기본 빌딩 블록입니다. Flutter의 핵심 철학은 "모든 것이 위젯"이라는 개념에 기반합니다.
위젯의 특징
- 선언적 UI: Flutter의 위젯은 UI의 현재 상태를 선언적으로 설명합니다.
- 불변성(Immutable): 위젯은 생성된 후 변경할 수 없습니다. UI를 변경하려면 새 위젯을 생성해야 합니다.
- 계층 구조: 위젯은 트리 형태로 구성되며, 부모 위젯이 자식 위젯을 포함합니다.
- 합성(Composition): 작은 위젯들을 조합하여 복잡한 UI를 구성합니다.
위젯의 주요 유형
StatelessWidget: 상태가 없는 위젯으로, 한 번 생성되면 변경되지 않습니다.
class MyText extends StatelessWidget { @override Widget build(BuildContext context) { return Text('Hello World'); } }
StatefulWidget: 상태를 가진 위젯으로, 위젯의 수명 동안 변경될 수 있는 데이터를 관리합니다.
class Counter extends StatefulWidget { @override _CounterState createState() => _CounterState(); } class _CounterState extends State<Counter> { int _count = 0; @override Widget build(BuildContext context) { return RaisedButton( child: Text('Count: $_count'), onPressed: () { setState(() { _count++; }); }, ); } }
기본 위젯: Text, Button, Image 등 기본적인 UI 요소를 표현하는 위젯
- 레이아웃 위젯: Row, Column, Stack 등 다른 위젯을 배치하는 위젯
- 머티리얼 디자인 위젯: AppBar, FloatingActionButton 등 머티리얼 디자인 지침을 따르는 위젯
- 쿠퍼티노 위젯: iOS 스타일의 디자인을 위한 위젯
위젯 생명주기
위젯은 다음과 같은 생명주기를 가집니다:
- 생성: 위젯이 처음 생성될 때
- 빌드: 위젯의 UI를 구축할 때 (build 메서드 호출)
- 상태 변경: StatefulWidget에서 상태가 변경될 때 (setState 호출)
- 제거: 위젯이 위젯 트리에서 제거될 때
Flutter의 모든 UI 요소는 위젯으로 구성되어 있으며, 위젯의 조합을 통해 복잡한 사용자 인터페이스를 만들 수 있습니다.