State
위젯에 대한 속성을 의미한다. (해당 위젯이 가지고 있는 속성을 모두 상태라 부름)
위젯이 사용하는 데이터는 변경될 수 있다
위젯이 빌드 될때 데이터를 동시에 읽을 수 없다
→ 모든 state는 build 메서드가 호출 될때까지 설정되어야 한다.
: State를 가지고 한번 생성되면 절대 바뀌지 않는다. 즉, 위젯을 한 번만 그리고 다시 그리지 않는다.
Stateless를 바꾸려면 완전히 파괴 (destroy)하고 다시 rebuild하는 방법 밖에 없음
: 자체적으로 상태를 가지고 있다. Stateful widget은 상태가 변경되면 build를 여러 번 하는 위젯이다. State Object와 강력하게 결함한다. State Object의 역할은 위젯의 구성요소나 위젯의 속성들을 지속적으로 추적하는 것이기 때문에 사용자가 원하는 대로 위젯의 구성요소나 속성에 관련된 변수들을 setState메서드를 사용해서 언제라도 업데이트할 수 있다.
createState
statefulWidget을 구축하자마자 호출됨
initState
: 위젯이 생성될때 처음으로 호출되는 메서드
didChangeDependencies
: 위젯이 최초 생성될 때 initState() 다음에 호출되며 위젯이 의존하는 데이터의 객체가 호출될때마다 호출됨
build
버튼을 누르거나 액션을 할 경우 호출되며 반드시 widget을 리턴해야함
didUpdateWidget
위젯의 구성이 변경될때마다 호출됨
setState
데이터가 변경되었음(상태가 변경되었음)을 프레임워크에 알리는데 사용하며 비동기적이지 않은 callback에서 사용
deactivate
: state오브젝트가 트리로 부터 삭제될때마다 호출됨
dispose
State가 영구적으로 제거된다. (더 이상 build되지 않는 화면)