본문 바로가기
Language_/Flutter

[Flutter] Error "setState() called after dispose(): (lifecycle state: defunct, not mounted" 해결

by 낭람_ 2020. 10. 15.
반응형

[stackoverflow]

 

FlutterError (setState() called after dispose(): (lifecycle state: defunct, not mounted)

the error is thrown in two areas (and the app freezes (when the app is minimized, when phones back button is clicked, or when another app runs on top of the flutter app. Flutter version: 1.20.2 (pr...

stackoverflow.com

 

flutter로 개발하다 보니 위의 에러가 떠서 한 번 찾아보았다..

 

stackoverflow에 해결 방법이 적혀있어 기록할 겸 그적여 본다.

 

await 이후에는 더 이상 마운트 되지 않아서 저 위의 에러가 뜨는 것이다.

 

 

해결 방안

 

1. 그냥 무시해도 상관없다고 합니다. 그 예외는 따로 함수를 저장해서 계속 진행이 된다고 합니다.

 

2. if (mounted)을 await과 setState() 사이에 넣으면 됩니다.

 

  _loadValue() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    if (mounted) // await과 setState()의 사이..
      setState(() {
        //기존 내용
      });
  }

 

이런 식으로 작성하면 됩니다.

 

 

반응형

댓글