[Flutter] Stateful 위젯의 라이프사이클에 관해 퍼온 글

Taeho Min·2020년 12월 6일
0

Flutter

목록 보기
3/6

플러터를 공부중 입니다. Stateful의 라이프 사이클에 대해 공부하고 정리하려는데 글쓰는게 어렵네요. 이보다 더 잘 정리할 자신이 없어서 잘 정리된 글을 퍼 옵니다. 글을 잘 써서 출간하는 것도 좋지만 부족한 기억을 보조하는 역할도 해야 하니까요. 추가적으로 링크된 원문을 번역하는 것으로 정리 해 보았습니다.

The Stateful Widget Lifecycle

Stateful Widget이 실행될때 첫번째로 생성자가 실행됩니다.. 생성자 실행은 라이프사이큰 단계에 포함되지 않습니다. 이 시점에는 위젯 속성의 상태가 비어 있습니다.

1. createState()

라이프사이클의 첫번째는 createState() 입니다. mutable한 상태를 유지하는 State 오브젝트를 생성합니다. State객체가 생성되면 mount라는 속설을 true로 설정하고 State 오브젝트를 BuildContext와 연결합니다.

2. initState()

두번째는 initState() 입니다. 이 메소드는 State 오브젝트가 생성될때 한번만 호출됩니다. 이 메서드에서 BuildContext를 사용할 수 없습니다.

3. didChangeDependencies()

세번째는 didChangeDependencies() 입니다. initState() 다음에 호출되고 또한 위젯이 변경 될 때도 호출됩니다. 이 메서드 다은에 항상 build() 메서드가 호출되므로 이 메서드는 거의 필요하지 않습니다.

4. build()

네번째는 build() 입니다. 처음은 didChangeDependencies() 다음에 호출되지만 위젝의 상태가 변경될 때 마다 실행됩니다.(didUpdateWidget() 또는 setState() 메서드가 호출 될 때마다)

5. didUpdateWidget()

다섯번째는 didUpdateWidget() 입니다. 상위 위젯이 구성을 변경하고 위젯을 다시 빌드 해야하는 경우 호출됩니다. 인수로 이전 위젯을 제공합니다. 이후 build() 메서드를 호출합니다.

라이프사이클에 영향을 줄 수 있는 setState() 메서드는 현재 오브젝트의 상태가 "dirty"라고 프레임워크에 통지합니다. 이는 UI에 영향을 줄 수 있는 방식으로 변경되었음을 의미합니다. 그러면 프레임워크는 build() 메서드를 호출해서 위젯을 업데이트 합니다. setState 메서드는 개발자가 호출하는 유일한 메서드이기 때문에 수명주기 메서드에 포함하지 않습니다.

6. deactivate()

여섯번째는 deactivate() 입니다. 이 메서드는 위젯이 위젯트리에서 제거될 때 호출되지만 현재 프레임 변경이 완료되기 전에 다시 삽입될 수 있습니다.

7. dispose()

마지막 일곱번째는 dispose() 입니다. 이 메서드는 위젝트리에서 영구적으로 제거될 때 호출됩니다. 데이터 리스너 또는 connections을 정리하는데 사용 할 수 있습니다. dispose() 메서드 이후에 mounted 속성은 false가 됩니다. 이 상태의 오브젝트는 결코 remount 될 수 업습니다.

profile
개발자

0개의 댓글