💡 이 글에서 제시하는 해결책은 GetX를 쓰는 프로젝트에서 특정 화면에 대해 onReady()
함수가 실행되지 않을 때에도 적용할 수 있습니다.
(이는 GetX의 onReady()
함수 또한 onInit()
안에서 addPostFrameCallback
을 통해 실행되기 때문입니다.)
출처 : Flutter : addPostFrameCallback callback not called
addPostFrameCallback
이 실행되지 않기 때문에 발생합니다.ensureVisualUpdate()
메서드는 새 프레임을 그리도록 스케쥴링하는 역할을 하며, 이를 통해 강제적으로 새 프레임을 그리도록 합니다.addPostFrameCallback
이 실행됩니다.오류가 발생하는 부분에
WidgetsBinding.instance.ensureVisualUpdate()
를 추가합니다.
WidgetsBinding.instance.ensureVisualUpdate();
WidgetsBinding.instance!.addPostFrameCallback((timestamp) {
...
});
onReady()
가 호출되지 않는 문제라면, WidgetsBinding.instance.ensureVisualUpdate()
를 onInit()
의 맨 끝에 넣어주면 됩니다.void onInit() {
...
// 아래 1줄 추가.
WidgetsBinding.instance.ensureVisualUpdate();
super.onInit();
}
void onReady() {
super.onReady();
...
}