보통 이런 오류는 lazy 하게 네트워크 상태가 늦어지거나 할 경우 이미 위젯은 dispose가 된 상태인데 setState 를 호출 하는 경우로 보인다. 


해결법은 간단하게 onDispose 함수에서 변수 하나 선언해서 true / false 로 해주면 된다. 


라이프사이클에 대해서 궁금하면 여기 로 가서 한번 보고 오자.


우선 이렇게 변수를 지정 후에

@override
void dispose() {
super.dispose();
isDisposed = true;
}


변경하는 부분에서 

if(!isDisposed) {
setState(() {

....
});
}

이런식으로 하면 된다. 


팁으로 시작시 setState 를 하는 경우에는 this.mounted 로 체크가 가능하다.


이상으로 늦은 setState 오류에 대해서 살펴보았다. 



+ Recent posts