스터디/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 오류에 대해서 살펴보았다.
반응형