Life of a Widget?! | Decoding Flutter

valas·2022년 1월 19일
0

플러터 디코딩

목록 보기
2/6

동영상

https://www.youtube.com/watch?v=cyFM2emjbQ8

내용 정리 및 요약

안드로이드나 iOS에서 라이프 사이클을 경험해 본 적 있고, 이를 적용해보고 싶을 것이다.
위젯에도 라이프 사이클이 있을까?
위젯에 대해 ARABOZA. (원래는 다단 케잌에 비유했지만 그보단 한 번 만들면 변형하기 어려운 것, 건담이 나을 것 같아 내용을 조금 바꾸었다.)

건담을 만들 때 각 파츠에 맞는 조립법이 있다.
위젯은 건담 제작법과 비슷하다.
한 번 금형을 만들어 사출하면 다른 모양으로 바꿀 수 없다. 같은 방식으로 Widget이 일단 생성되면 변경이 불가능하다.
하지만 앱은 애니메이션이나 유저입력에 반응해야 하기 때문에 변경하는 방식이 있긴 하다.
이 때 Flutter는 건담을 다시 만든다.

이는 많은 작업이 필요해 보이지만, Flutter는 위젯의 업데이트를 매우 효율적으로 처리하도록 설계 되어 있다. (const 사용 강조하는 이유인 듯)
분석해보면, 다양한 Element와 렌더링 객체는 다른 객체들의 위치를 추적하고 State에 따라 재구성되며 필요한 경우 화면을 업데이트한다.
그렇다면 위젯은 lifecycle 이 있을까?

없다.

결론

위젯은 build, rebuild 되며 상태에 따라 사용되지 않는다.

그렇다면 StatefulWidget은 뭔데?

그건 위젯이 아니고, 변수의 상태를 알 수 있게 도와주는 클래스다. 상태에 따라 rebuild 되거나, 다른 위젯을 rebuild 한다.

The states are no widgets, they are classes that help to keep state of variables, but every time it rebuilds, it rebuilds other widgets, never the same ones (댓글에서 발췌)

0개의 댓글