인프런 커뮤니티 질문&답변

bubble gun님의 프로필 이미지
bubble gun

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

StateNotifierProvider 실습

ref.watch / ref.read

작성

·

380

·

수정됨

0

안녕하세요.

ref.watch 는 provider 의 현재 값을 subscribing 하고 그 값에 update가 있으면 그것도 subscribe를 하게되어 ui를 새로 rebuild함으로써 바뀐 화면을 보여준다고 이해를 했습니다.

 

반면 ref.read는 provider의 현재 값을 받아오지만 subscribe는 하지 않는데, 여기서는 shoppingListProvider의 notifier에 access해서 toggleHasBought를 작동시키는 역할을 한다고 이해했습니다.

toggleHasBought이 작동함으로써 !hasBought가 된 것을 ref.watch가 스크린에 리빌드 하는 원리라고 생각하면 될까요?

하나 더 궁금한 점은 ref.read(shoppingListProvider.notifier)..... 그리고 이전 챕터 stateProvider 부분에서 모든 ref.read를 ref.watch로 바꾸어도 기존과 똑같이 작동은 하는데 이것은 어떤 원리에 의해서 이렇게 되는 것인지. 겉으로 보이는 것은 같지만 맥락이 어떻게 다른것인지 궁금합니다.

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

이론 이해는 잘 하신 것 같습니다.

추가 설명을 보태면 watch의 경우 말씀하신대로 subscribe의 개념입니다. 프로바이더의 상태값이 변경될때마다 지속적으로 업데이트 되기때문에 상태를 바라보는 상황에 사용하게됩니다. 예를들면 UI같은 경우죠!

read의 경우 역시 말씀하신대로 프로바이더를 읽는 순간의 상태를 가져옵니다. 라이프 사이클이 짧고 명확한 콜백 함수들이나 새로 갱신된 데이터를 받을 필요가 없을때 사용됩니다!

그렇기때문에 특정 상황에서는 read와 watch중 무엇을 사용해도 같은 결과가 나옵니다.

감사합니다.

bubble gun님의 프로필 이미지
bubble gun

작성한 질문수

질문하기