StatelessWidget은 상태가 없는 위젯인데, 한 번 생성되면 그 상태를 변경할 수 없다.
주로 데이터가 변경되지 않고 화면에 표시만 해야 하는 경우에 사용한다.
build 메서드 안에서 위젯을 생성하고 반한다.
class MyStatelessWidget extends StatelessWidget { Widget build(BuildContext context) { return Container( child: Text('Stateless Widget'), ); } }
StatefulWidget은 상태가 있는 위젯으로, 화면에 표시되는 내용이나 상태를 동적으로 변경해야 할 때 사용한다.
StatefulWidget은 상태를 가지고 있는 State 객체와 함께 사용한다.
createState 메서드에서 State 객체를 생성하고 반환하며, 해당 State 객체에서 상태를 관리하고 업데이트한다.
class MyStatefulWidget extends StatefulWidget { _MyStatefulWidgetState createState() => _MyStatefulWidgetState(); } // class _MyStatefulWidgetState extends State<MyStatefulWidget> { Widget build(BuildContext context) { return Container( child: Text('Stateful Widget'), ); } }
요약)
StatelessWidget: 정적인 콘텐츠(단순한 정보를 보여주는 페이지나 정적인 이미지, 텍스트를 표시하는 페이지)
StatefulWidget: 동적인 콘텐츠(사용자가 상호 작용하면서 데이터를 입력하고 결과에 따라 화면이 업데이트되어야 하는 경우)