[Flutter] - You need to call "Get.put(MyController())" or "Get.lazyPut(()=>MyController())"

min_chan·2024년 9월 24일
0


1. 문제

  • 오..오..오...늘 GetX를 사용하던 중 제목과 같은 에러가 발생하였다. stack overflow를 찾아본 결과 페이지 이동 시 컨트롤러가 dispose된 문제라고 생각했다.

2. 해결 방법

#1 - lazyPut을 fenix: true와 함께 사용하여 dispose된 후에도 컨트롤러 복원 가능

Get.lazyPut(() => MyController(), fenix: true);

#2 - SchedulerBinding.instance.addPostFrameCallback을 사용하여 현재 프레임이 렌더링된 후에 특정 작업을 수행하도록 만들어준다.

  
  void initState() {
    super.initState();
    SchedulerBinding.instance.addPostFrameCallback((_) {
      Get.put(MyController());
    });
  }

해결 방법이 더 많겠지만 내가 찾은 2번으로 문제를 해결했다 ^^*


0개의 댓글