✅ Widget이란?
- 독립적으로 실행되는 작은 프로그램
- 주로 바탕화면, 앱 화면 등에서 날씨·뉴스·생활정보 등을 보여줌
- 그래픽이나 데이터 요소를 처리하는 함수를 가짐
👉 일반적으로 말하는 위젯은 작은 프로그램이지만,
Flutter에서의 위젯은 더 넓은 개념을 가집니다.
✅ Flutter의 위젯
- UI를 만들고 구성하는 모든 기본 단위 요소
- 보이지 않는 레이아웃 요소까지도 위젯
- 즉, Flutter의 모든 것은 위젯
✅ Flutter 위젯의 종류
- Stateless Widget
- 상태가 없는 정적인 위젯
- 이전 상호작용의 값을 저장하지 않음
- 예: 텍스트, 아이콘, 이미지
- Stateful Widget
- 상태(state)를 추적하고 보존하는 위젯
- 사용자의 입력이나 데이터 변화에 따라 모양 변화
- 예: 버튼 클릭, 텍스트 입력, 데이터 로딩 상태
- Inherited Widget
- 위젯 트리 전체에 데이터를 전달하는 특수한 위젯
- 주로 상태 관리에 활용
✅ Stateless 위젯 특징
- 화면에 존재만 할 뿐 변화 없음
- 실시간 데이터 저장 불가
- 변화(모양·상태)를 유발하는 value 값 없음
✅ Stateful 위젯 특징
- 사용자의 상호작용(클릭, 입력 등)에 따라 모양이 변함
- 데이터를 받으면 UI가 다시 그려짐
✅ Flutter 위젯 트리 (Widget Tree)
위젯들은 트리(tree) 구조로 정리됩니다.
부모 위젯(Parent) 안에 자식 위젯(Child)을 포함할 수 있으며, 이를 Widget Tree라고 합니다.
예시 구조:
MyApp
└─ MaterialApp
└─ MyHomePage
└─ Scaffold
├─ AppBar
└─ Center
└─ Column
├─ Text
├─ Image
└─ Button
✅ 간단 예시 코드
1) Stateless Widget
import 'package:flutter/material.dart';
class MyStatelessWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const Text(
'안녕하세요! 저는 Stateless Widget 입니다.',
style: TextStyle(fontSize: 20),
);
}
}
import 'package:flutter/material.dart';
class MyStatefulWidget extends StatefulWidget {
@override
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
int _count = 0;
void _increment() {
setState(() {
_count++;
});
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('버튼 클릭 횟수: $_count', style: const TextStyle(fontSize: 20)),
ElevatedButton(
onPressed: _increment,
child: const Text('클릭'),
),
],
);
}
}
📌 정리 (Summary)
Flutter의 모든 것은 위젯이다.
변화가 없는 UI → Stateless Widget
모양·상태가 바뀌는 UI → Stateful Widget
위젯은 항상 트리 구조로 구성된다.
'Flutter > Flutter' 카테고리의 다른 글
| [ Flutter ] Container 위젯 (0) | 2023.09.21 |
|---|





























