Flutter에서 위젯은 두 가지 주요 유형으로 구분됩니다: StatefulWidget
과 StatelessWidget
두 유형 모두 UI를 정의하는 데 사용되지만, 상태 관리 방식에서 중요한 차이점이 있습니다.
import 'package:flutter/material.dart';
class MyStatelessWidget extends StatelessWidget {
Widget build(BuildContext context) {
return Center(
child: Text('I am a stateless widget'),
);
}
}
void main() {
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Stateless Widget Example')),
body: MyStatelessWidget(),
),
));
}
import 'package:flutter/material.dart';
class MyStatefulWidget extends StatefulWidget {
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
Widget build(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('You have pushed the button this many times:'),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
ElevatedButton(
onPressed: _incrementCounter,
child: Text('Increment'),
),
],
),
);
}
}
void main() {
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Stateful Widget Example')),
body: MyStatefulWidget(),
),
));
}
StatelessWidget
을 사용하고, 상태 관리가 필요한 경우에는 StatefulWidget
을 사용합니다.StatefulWidget
을 사용할 때는 상태 변경이 필요한 부분만 최소화하여 성능을 최적화합니다.StatelessWidget
클래스의 공식 문서입니다.StatefulWidget
클래스의 공식 문서입니다.State
클래스의 공식 문서입니다.