작성
·
234
답변 1
1
안녕하세요
setState() 함수는 State 클래스를 상속받을경우 제공되는 함수입니다!
setState()의 역할은 해당 함수가 제공된 클래스의 build 함수를 재실행하는게 목적입니다.
StatelessWidget과 StatefulWidget의 라이프 사이클을 비교해드린 제 강의를 기억해보시면 StatefulWidget은 StatefulWidget과 State 클래스 둘로 구성되어있다고 말씀 드렸습니다.
저희가 StatefulWidget을 사용할땐 StatefulWidget을 상속한 클래스를 사용하지만 사실 이 클래스는 createState() 함수를 통해 State 클래스를 반환하는 역할을 합니다. 그리고 build() 함수는 State 클래스에 존재하죠. StatefulWidget에는 build() 함수가 없습니다. 라이프 사이클에서 말씀드린것처럼 불변의 법칙때문에 그렇게 설계되어있습니다. 그러니 setState() 함수는 State 클래스의 build() 함수를 재실행하는거지 StatefulWidget의 build() 함수를 재실행하는게 아닙니다 (없습니다).
이건 매우 중요한 내용이니 방금 말씀드린 내용이 이해가 어렵다면 꼭 라이프사이클 강의를 다시 복습해보시길 바랍니다!
또 질문 있으시면 언제든 문의주세요!
감사합니다.
결국 HomeScreenState 의 build 를 재실행하면서 TestWidget(StatelessWidget) 도 다시 인스턴트를 만들면서 build 가 불러와진거군요..
감사합니다~!