TIL

이건선·2023년 8월 2일
0

Flutter

목록 보기
24/30

Obx 상태관리 오류

트러블


    return FutureBuilder(
      future: controller.getAddressData(),
      builder: (context, snapshot) {
...

          controller.refreshShowList(); // 문제의 코드라인
          return Obx(() => controller.showAddressList());
          
...
  1. 터미널에 에러가 발생하지 않습니다.
  2. 비정상적인 상태관리가 이루어 집니다.
    예를 들어서, 컨테이너를 삭제했습니다. 그러나 상태관리가 이루어지지 않아서 컨터네이너가 그대로 남아있습니다.

슈팅

  1. Obx(() => controller.refreshShowList()); 변경 => 상태관리 실패

해결

...

          return Obx(() => controller.showAddressList());
          
...

showAddressList() {
    refreshShowList(); // showAddressList() 메서드 내부에서 실행하게 변경
    
...

Builder내에서 실행시키는 코드에서 showAddressList() 함수 내부에서 refreshShowList() 함수를 호출하는 방식으로 코드 변경했습니다.


  • 정확하지는 않지만 서로다른 두 개의 메서드가 같은 controller의 상태를 변경 시킬때 트러블이 발생한것 같습니다.
  • 따라서 showAddressList()내부에서 refreshShowList() 메서드를 실행시키는 코드로 변경함으로써 문제가 해결된것 같습니다.
profile
멋지게 기록하자

0개의 댓글