• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

ref.read, ref.write, ref.listen이 헷갈려요!

24.01.17 11:39 작성 조회수 212

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

코드팩토리 디스코드
https://bit.ly/3HzRzUM

Flutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! provider를 사용할 때 ref.read는 on click 함수처럼 이벤트있는 곳에서 한번만 사용할 때 쓴다고 이해했는데,splashScreen의 checkToken함수 내부에서는 ref.read(secureStorageProvider)로 사용하고restaurantDetailScreen의 getRestaurantDetail 함수 내부에서는 ref.watch(dioProvider)로 사용한 이유가 뭘까요? 그리고 ref.listen은 이것들과 어떻게 다른 상황에서 쓰이는지 헷갈립니다.

답변 1

답변을 작성해보세요.

1

안녕하세요!

ref.read는 단발성 함수입니다. 대상 프로바이더의 상태가 바뀌더라도 다시 빌드되지 않습니다. 그래서 단 한번만 상태를 가져올때, 또는 프로바이더의 함수를 사용할때 많이 사용됩니다.

ref.watch는 말 그대로 바라보고있는 함수입니다. 대상 프로바이더의 상태가 변경될때마다 빌드를 재실행 시킵니다.

ref.listen은 watch와 같지만 listen 함수 안에 제공되는 콜백 함수만 재실행하는 역할입니다. watch와 listen을 모두 사용 가능한 상황으로 판단된다면 일반적으로 watch 사용이 맞습니다.

감사합니다!