300x250

initState() 메서드에서 Provider read () 메서드를 호출하였다.

그러자

"setState() or markNeedsBuild() called during build."  에러를 뱉어냈다.

원인은

Widget LifeCycle 에 위배되기 때문이다.  ( Widget Life Cycle 참조 ) 

build() 메서드는 Widget Tree 를 생성하는 역할을 하는데 해당 프로세스가 완료 되기 전에 

Provider 내부 동작 중에 setState ( markNeedsBuild ) 혹은 메서드를 호출했기 때문이다. 

( framework 에 그리라는 명령을 한 샘 )

해결책

 

1. WidgetsBinding 인스턴스의 addPostFrameCallback 등록하여 사용

2. 

3. 

( 2, 3번은 추후 업데이트 ) 

 

반응형

+ Recent posts