[Flutter] “setState() called after dispose()” 에러

작성 날짜:

최근 업데이트 날짜:

상황에 따라 변화하는 위젯(Stateful Widget)을 제어하기 위해 setState()을 사용하곤 한다. 이때 종종 아래와 같은 에러가 발생할 때가 있다.

에러 내용

setState() called after dispose()

원인

이는 해당 위젯이 이미 dispose()된 상태인데 setState()이 불려서 발생하는 에러이다.

해결 방법

이 에러는 this.mounted를 사용해서 해결할 수 있다. mounted는 위젯이 dispose()되는 순간 false가 되기 때문에, 아래와 같이 mountedtrue일 때만 setState()를 호출하도록 설정하면 된다.

mounted에 대한 상세 설명.

if (this.mounted) {
  setState(() {
    // state 변경에 대한 코드.
  });
}

태그:

카테고리:

최근 업데이트 날짜:

댓글남기기