inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

StateNotifierProvider 실습

ref.watch / ref.read

442

bubble gun

작성한 질문수 21

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로 바꾸어도 기존과 똑같이 작동은 하는데 이것은 어떤 원리에 의해서 이렇게 되는 것인지. 겉으로 보이는 것은 같지만 맥락이 어떻게 다른것인지 궁금합니다.

flutter 하이브리드-앱 하이브리드 앱 Flutter

답변 1

0

코드팩토리

안녕하세요!

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

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

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

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

감사합니다.

Isar 마지막 업데이트는 2년전입니다.

0

31

0

FlutterSecureStorage 질문

0

32

0

Dio onError Interceptor 만드는 부분에 질문이 있습니다.

0

80

2

관리자 기능에 대한 질문

0

100

2

part 'restaurant_model.g.dart';

0

92

1

36강. dio 인터셉터에 storage를 전달하는 코드가 이해 안되는데요. 도움 부탁드립니다.

0

56

2

2번 반환 상황 관련 질문

0

61

2

riverpod 3.0

0

140

2

Asset folder??

0

83

2

디자이너와 협업 시 프레임 크기 설정 관련 질문

0

114

2

FutureProvider, StateNotifierProvider 선택 기준

0

70

2

컴포넌트 모델화

0

64

2

쿼리 파라미터

0

84

2

화면 안보임

0

68

2

PaginationListView

0

54

1

강의중 37.Dio onErrorInterceptor 작업하기 dio 관련 질문입니다.

0

103

2

프로토타입이미지

0

62

2

여러 객체를 상태 관리하는 방법에 대한 질문

0

85

2

장바구니 결제하기 응답이 500이 옵니다.

0

105

2

removeFromBasket에서 await patchBasket()을 마지막에 하면 에러나는거 아닌가요?

0

67

2

이 두가지는 완전히 동일한 기능인가요?

0

106

3

내부 코드를 작성하지 않은 CursorPaginationLoading가 어떻게 로딩상태를 갖는지 잘 모르겠습니다...

0

78

2

_SplashScreenState에서 storage를 late로 호출해서 한번만 불러와도 되나요?

0

86

2

코딩 작성 순서 관련 질문

0

88

2