본문 바로가기
  • 포르쉐타고싶다
인포테인먼트 - development/flutter

[flutter] initstate에 Provider 사용하기 : WidgetBinder

by 지오ㄴl 2020. 8. 13.

전 화면의 이미지를 다음 화면에 가져와

initState에서 Provider로 widget.[데이터]를 공급해야 할 일이 있다.

 

하지만 생으로 initState에 

@override
  void initState() {
    // TODO: implement initState
    super.initState();
    
    Provider.of<~~Provider>(context).set();
    
}

이렇게 사용하면

 

'package:flutter/src/widgets/framework.dart': Failed assertion: line 4233 pos 12: '!_dirty': is not true.


Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=BUG.md

하는 오류가 발생한다.

initState에서의 context와 rootContext가 다르기 때문이다

 


 

해결

 

이를 해결하기 위해서 WidgetBinder를 사용해야 한다.

@override
  void initState() {
    // TODO: implement initState
    super.initState();
    
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
      Provider.of<ReviewModifyProvider>(context, listen: false).setExistingReviewImageList(widget.reviewImageList);
    });
}
반응형

댓글