Search
🚕

“setState() or markNeedsBuild called during build” 이슈 해결

생성일
2022/03/13 05:36
태그
Flutter
속성

setState() or markNeedsBuild called during build” 이슈

Flutter 에서 Provider를 사용하거나, 그 외 다양한 상황에서 “setState() or markNeedsBuild called during build” 이슈 를 만날 수 있습니다.
이 이슈를 해결하는 방법은 “딱 명확하게 이 부분을 수정하면 된다” 라고 표현하긴 어렵습니다. null pointer exception 처럼 어디서든(?) 흔하게 발생하는 보편적인 원인이기 때문입니다.
ChangeNotifier 에서 사용하는 state, 그리고 이 state를 변경시키는 notifyListeners() 가 어느 시점에 호출되는지 현재 설계에 대한 이해가 바탕이 되어야 합니다.
State가 변경되어 ⇒ UI 갱신이 필요한 StatefulWidget을 build 하고 있는데 ⇒ State가 또 변경되는 경우, 위 이슈가 발생합니다.
1. 새로 화면을 갱신할 필요가 없는 화면을 재갱신하지 않는지
2.
state 간 상호 의존이 발생하여 서로 state 를 변경시키는 무한루프에 빠지지 않았는지
위 2가지 관점으로 코드를 살펴보기를 바랍니다.