Flutter를 하기위해 이해하고 있어야 하는 중요한 이론인 Life cycle !
즉 생명주기이다.
먼저 Flutter의 Lifecycle을 이해하려면 state를 알아야한다.
말 그대로 State(상태)란 위젯에 대한 속성을 의미한다.
ex) Text위젯의 text, style, fontWeight, color 등 위젯이 가지고 있는 속성을 모두 상태라고 부른다.
Flutter에서는 위젯을 간단하게 상태를 가지고 있지 않은 Stateless Widget,
상태를 가지고 있는 Stateful Widget로 구분한다.
얘네는 상위의 위젯인 class를 상속받아서 만들어진 것들이다.
앞으로 우리가 만들거나 사용할 위젯들은 StatelessWidget/StatefulWidget을 상속받아서 만든 것 !
StatelessWidget/StatefulWidget위젯을 아는 것이 위젯을 만드는데 큰 도움을 준다.
StatelessWidget에서 less : 덜,적게, ~을 뺀
StatefulWidget에서 ful: ~이 넘치는,~이 있는
이 둘은 위젯이 상태를 갖느냐 안갖느냐에 따라 나눠진다.
그렇다면 상태를 가지는 것이란 무엇일까?
-> 어떤 물체가 변화되는 것을 모니터링 하고 그것을 받아들이는 것을 상태가 있다,없다라고 표현할 수 있다.
정리하자면
변하는 것을 화면상에 나타내야 할 때 ->StatefulWidget
고정된 상태를 나타내야 할 때 ->StatelessWidget
Life cycle은 쉽게 말해 일종의 순서(로직)라고 생각하면 된다.
Stateless는 앞서 말했듯이 화면에 그려주기만 하면 되기때문에 바로 build()로 넘어가는 반면, Stateful은 변경이 가능하기 때문에 보다 복잡한 로직을 가지고 있다.
(1)createState
상태를 생성한다.
(2) initState()
위젯이 생성될때 처음으로 호출되는 메서드 !
initState는 상태를 초기화하며 위젯이 실행되고 한 번만 실행되며 반드시 super.initState()를 호출해야한다.
(3) didChangeDependencies()
didChangeDependencies 메서드는 위젯이 최초 생성될 때 initState() 다음에 호출이 되며, 위젯이 의존하는 데이터의 객체가 호출될때마다 호출된다.
(4) build()
회면에 위젯을 표시하는 단계
build 메서드는 한번 호출되지 않고 버튼을 누르거나 어떠한 액션을 할 경우마다 호출이 된다.
또한 반드시 Widget을 리턴해야한다.
(5) setState()
아까 라이프 사이클에서 build에서 setState로 가면 다시 build 전으로 되돌아가는데 이때 상태를 갱신하여 위젯이 다시 build된다.
우린 여기 build에서 계속되는 액션을 수행하게 된다.
'데이터가 변경되었음'을 프레임워크에 알리는데 사용한다.
(6) didUpdateWidget()
위젯이 업데이트되었을때 실행된다.
(7) deactivate()
State가 위젯 트리에서 제거된다.
(8) dispose()
dispose는 State객체가 완전히 제거되어 더이상 State 사용이 불가한 상태가 된다.
즉 더이상 build 되지 않는 화면이 됨 !
📍참고자료