StatelessWidget & StatefulWidget

훈나무·2023년 6월 1일
0

Flutter

목록 보기
5/7
post-thumbnail

플러터에는 크게 StatelessWidgetStatefulWidget 2종류의 위젯으로 분류할 수 있습니다.

StatelessWidget


StatelessWidget은 변화가 필요없는 화면을 구성할 때 사용하는 위젯 클래스이며, build 메서드는 한 번만 호출됩니다.

위의 화면을 예로 들면, +버튼을 누를 때 마다 숫자가 1씩 증가합니다.
그러므로 숫자는 StatefulWidget 그 외의 위젯들은 StatelessWidget 으로 생성할 수 있습니다.

생명주기

StatelessWidget는 build된 후, 어떠한 일도 일어나지 않습니다. 하지만, 부모위젯이 다시 build된다면, 처음부터 Constructor와 build가 다시 실행됩니다.

StatefulWidget


StatefulWidget은 변화가 필요한 화면을 구성할 때 사용하는 위젯입니다.

위의 화면에서 숫자는 StatefulWidget 으로 생성해야 합니다. + 버튼을 누를 때 마다, 변화하기 때문입니다!

생명주기

음... 상당히 복잡한데, 많이 사용되는 메소드는 initState, setState, dispose 입니다.

initState 는 StatefulWidget이 생성될 때 딱 1번만 실행됩니다. 또한, build 이전에 실행된다는 점을 주의할 필요가 있습니다. 따라서, initState내에서는 setState를 호출할 필요성이 거의 없습니다. -> 어차피 initState가 build 이전에 실행되므로

setState 란 widget의 상태가 변경되었다고 flutter에게 알리는 과정입니다. flutter는 상태의 변경을 감지하고, 해당 widget을 다시 그리게 됩니다. 즉 해당 widget을 다시 그리고 싶다면, setState를 사용해서 상태를 변경해야 합니다.

dispose 는 State 객체를 소멸할 때 호출합니다. 이 함수를 호출하는 것은 해당 위젯을 종료하겠다는 의미입니다. 네트워크 통신을 하다가 dispose() 함수를 호출하면 데이터 전송을 중지합니다. 위젯을 소멸할 때 꼭 호출해야 하는 함수가 있다면 이 dispose() 함수 내에서 호출하면 됩니다.

profile
프론트엔드 개발자 입니다

0개의 댓글

관련 채용 정보