[Flutter] Provider Essential - 4

jaehee kim·2022년 2월 5일
1

Flutter

목록 보기
20/20
post-thumbnail
post-custom-banner

Errors

1. setState() or markNeedsBuild() called during build.

framework가 widget들을 그리고있는 상황에서 다시 widget을 그려달라고 요청하면 안된다. 또는 화면을 그리면서 다른 화면으로 이동하라고 요청하면 안된다.

Page Rendering Process (Frame Rendering)
  • Create an element (BuildContext)
  • initState
  • didChangeDependencies
  • Build

위의 에러를 수정하기위해서 addPostFrameCallback
을 사용할 수 있다.
현재 frame이 완성된 후, 등록된 callback을 실행시키도록 한다.

WidgetBinding.instance!.addPostFrameCallback((Duration timestamp) {
/// Do something
});

에러를 해결하는 2가지 다른 방법들도 있다.

Future.delayed(Duration(seconds: 0), () {
/// Do something
});

Future.microtask(() {
/// Do something
});

2. dependOnInheritedWidgeOfExactType<_LocalizationsScope>() or dependOnInheritedElement() was called before ~

화면이 표시되자마자 dialog같은 것을 보여주고 싶을때 initState에서 호출하면 발생한다.

여기서도 addPostFrameCallback
을 사용할 수 있다.

WidgetBinding.instance!.addPostFrameCallback((Duration timestamp) {
	showDialog(
    	context: context,
        builder: (context) {
        	return AlertDialog(
            	content: Text('Dialog!),
            );
        }
    );
});




Reference

Heavy Fran - Flutter Provider Essential

post-custom-banner

0개의 댓글