• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Flutter 게시판 Provider 사용시 서버에서 get요청으로 가져온 데이터 반영안됨

Provider 사용시 서버에서 get요청으로 가져온 데이터 반영안됨

  • 이 주제에는 2개 답변, 2명 참여가 있으며 황희윤3 년 전에 전에 마지막으로 업데이트했습니다.
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #35440

    황희윤
    참가자

    안녕하세요! 강의 보고 잘 따라 만들다가 기존에 setState로 제어했던 코드들을 다 지우고 Provider를 통해서 데이터를 관리하고 있습니다.

    문제는 앱을 처음 켤 때, API 데이터를 불러오는 함수(getData)가 늦게 작동해서 사진과 글들이 안올라오지만, 하단 바를 통해 다른 페이지에 갔다가 오면 그제서야 렌더링되면서 글과 사진이 올라 옵니다. 처음에는 initState가 늦게 작동하는게 아닌가 하는 의심이 들었지만, console창에는 앱을 키자마자 데이터가 잘 찍힙니다. UI에만 데이터가 나오지 않습니다. 무한스크롤처럼 맨 밑으로 스크롤 하면 불러오는 API도 똑같은 문제로 늦게 불러와집니다.

    뭔가 async await 때문에 그런거 같아서 async await을 안쓸려고 해봐도 오류가 나서( getter XXX isn't defined for the type 'Future<Response>) async await은 써야 할 것 같네요. 

    이 문제는 어떻게 해결하면 될까요?

     

    위에는 main.dart의 코드고 밑에는 Provider 코드입니다.

    #35461

    codingapple
    키 마스터

    HomeData에 들어있는 데이터 꺼내쓰는 컴포넌트가 재렌더링이 안되어서 그런게 아닐까요 

    데이터 꺼내쓰는 부분도 .watch<> 아니면 .read<> 잘 써야합니다 

    #35508

    황희윤
    참가자

    도움주셔서 정말 감사합니다. 알고 보니 사진과 글을 뿌리는 부분에서 watch가 아닌 read를 사용해서 생겼던 문제였습니다.

    watch는 데이터 값이 변경되었을 때 위젯을 재빌드하는 반면, read는 데이터 값이 변경되어도 재빌드하지 않는 걸 깨달았습니다.

    그래서 앞으로 watch는 변경된 데이터 값을 화면에 보여주는 용도로 사용하고, read는 데이터 값을 변경하는 함수나 이벤트들에 사용하겠습니다. 

    다시 한번 감사드립니다 ㅎㅎ

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠