State<StatefulWidget>에 대한 설명
Flutter에서 State<StatefulWidget>
은 StatefulWidget의 상태를 관리하는 클래스입니다. Flutter에서 StatefulWidget
은 상태가 변경될 수 있는 UI 요소를 의미하며, State
는 그 상태를 실제로 유지하고 관리하는 역할을 합니다.
State와 StatefulWidget의 관계
StatefulWidget
은 변경 가능한 상태를 갖고, 그 상태를 유지하기 위해 State
객체와 연결됩니다. State
객체는 상태 변경이 발생할 때마다 화면을 다시 렌더링합니다.
State<StatefulWidget>의 주요 역할
- 상태 관리:
State
객체는 위젯의 상태를 저장하고, 그 상태를 변경할 수 있습니다. 상태가 변경되면, setState()
를 호출하여 UI를 갱신합니다.
- build 메서드:
State
클래스는 build()
메서드를 통해 UI를 구성합니다. 상태가 변경될 때마다 build()
가 다시 호출되어 새롭게 업데이트된 UI를 표시합니다.
- 생명주기 관리:
State
객체는 위젯의 생명주기를 관리하며, 위젯이 생성되고 파괴되는 과정에서 적절한 메서드들을 호출합니다. 예를 들어, initState()
와 dispose()
메서드가 사용됩니다.
StatefulWidget과 State의 구조
Flutter에서 StatefulWidget
과 State
는 다음과 같은 구조로 연결됩니다:
class MyStatefulWidget extends StatefulWidget {
@override
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('StatefulWidget 예제'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('버튼을 누른 횟수:'),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
State 클래스의 주요 메서드
setState()
: 상태가 변경되었음을 Flutter에 알리고, UI를 다시 빌드하는 데 사용됩니다.
initState()
: 상태가 처음 생성될 때 호출되며, 초기화 작업을 수행합니다.
dispose()
: 위젯이 제거될 때 호출되며, 자원 해제 등의 작업을 수행합니다.
생명주기 메서드 예시
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
@override
void initState() {
super.initState();
// 초기화 작업
}
@override
void dispose() {
// 자원 해제
super.dispose();
}
@override
Widget build(BuildContext context) {
// UI 빌드
return Container();
}
}
State<StatefulWidget>의 특징 요약
State
는 StatefulWidget
의 상태를 유지하고 관리하는 클래스입니다.
- 상태가 변경되면
setState()
메서드를 사용하여 UI를 다시 빌드합니다.
- 위젯의 생명주기를 관리하고, 초기화와 종료 시점에 적절한 작업을 수행합니다.