initState
는 StatefulWidget
의 상태가 초기화될 때 호출되는 메서드입니다. 이 메서드는 위젯의 생명 주기에서 중요한 역할을 하며, 상태 초기화, 데이터 로드 및 설정 작업을 수행하는 데 사용됩니다.
initState
는 State
객체가 처음 생성될 때 한 번 호출되는 메서드입니다.initState
는 동기적으로 실행되어야 하며, 비동기 작업은 별도의 메서드에서 처리해야 합니다.TextEditingController
나 AnimationController
와 같은 컨트롤러를 설정합니다.import 'package:flutter/material.dart';
class MyStatefulWidget extends StatefulWidget {
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
int _counter = 0;
void initState() {
super.initState();
// 초기 상태 설정
_counter = 10;
}
void _incrementCounter() {
setState(() {
_counter++;
});
}
Widget build(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Counter: $_counter'),
ElevatedButton(
onPressed: _incrementCounter,
child: Text('Increment'),
),
],
),
);
}
}
void main() {
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('initState Example')),
body: MyStatefulWidget(),
),
));
}
import 'package:flutter/material.dart';
class MyStatefulWidget extends StatefulWidget {
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
String _data = '';
void initState() {
super.initState();
_loadData();
}
Future<void> _loadData() async {
// 비동기 데이터 로드 작업
await Future.delayed(Duration(seconds: 2));
setState(() {
_data = 'Loaded Data';
});
}
Widget build(BuildContext context) {
return Center(
child: Text(_data.isEmpty ? 'Loading...' : _data),
);
}
}
void main() {
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Async initState Example')),
body: MyStatefulWidget(),
),
));
}
initState
메서드에서 상태 변수를 초기화합니다.TextEditingController
또는 AnimationController
와 같은 컨트롤러를 설정합니다.initState
는 동기적으로 실행되므로, 비동기 작업은 별도의 메서드에서 수행합니다.initState
를 재정의할 때는 항상 super.initState()
를 호출하여 부모 클래스의 초기화 로직을 실행합니다.setState
를 사용하여 상태를 업데이트하고 UI를 다시 빌드합니다.initState
메서드의 공식 문서입니다.StatefulWidget
클래스의 공식 문서입니다.