«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

올해는 머신러닝이다.

[오류] setState() called after dispose() 본문

스터디/Flutter

[오류] setState() called after dispose()

행복한 수지아빠 2018. 10. 19. 11:13

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


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


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


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

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


변경하는 부분에서 

if(!isDisposed) {
setState(() {

....
});
}

이런식으로 하면 된다. 


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


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