개인 공부/플러터
State 란 무엇일까?
Sanyo
2024. 5. 18. 14:23
State는 앱에서 사용되는 data를 의미한다.
플러터에는 2개의 state가 있다.
- App state
- Widget state
- App stateApp state는 앱 전반에 걸쳐 사용되는 data이다. App state를 변경해서 전반적으로 데이터 수정을 할 수 있을 것이다.
- Widget stateWidget state는 이름에서 알 수 있듯이 한 Widget 내에서 사용하는 데이터를 의미한다. 특정 위젯 내에서만 필요하고 다른 위젯에는 필요하지 않을 때 사용한다.
Flutter를 처음 배울 때도 이 state를 접하게 될 것이다. 바로 StatelessWidget과 StatefulWidget을 본 적이 있을 것이다.
<StatelessWidget>
StatelessWidget은 state가 없는 widget이다. data가 아예 없다는 의미는 아니고,
변경할 data가 없다고 이해하면 편하다.
<StatefulWidget>
State가 존재하는 Widget이다. 내부 데이터가 변경되면 그를 바탕으로 화면을 다시 그릴 수 있다.
먼저 StatelessWidget을 살펴보자.
class TestStatelessWidget extends StatelessWidget{
int number = 0;
@override
Widget build(BuildContext context) {
throw UnimplementedError();
}
}
여기서 number의 값이 변할 수 있기에 오류까지는 아니지만 경고가 표시된다.
어처피 number의 값이 변한다고 해도 StatelessWidget에서는 변경된 데이터를 반영하지 않기에,
소용없기 때문이다.
경고를 없애려면
final int number = 0;
이런 식으로 정의해야 한다.
다음으로 StatefulWidget을 살펴보자.
StatefulWidget은 2개의 클래스로 이루어져 있다.
바뀌는 부분과 바뀌지 않는 부분.
class Test extends StatefulWidget {
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
@override
Widget build(BuildContext context){
return Container(
);
}
}
위 코드를 살펴보자.
변화가 생기면 _TestState에서 다시 Test로 올려보내고, Test가 새로 받은 위젯을 보여준다.
createState를 사용해서 서로 연결하고, _TestState는 State를 통해 연결한다.