provider에서 read를 사용

안녕하세요 선생님
선생님께서 올려주신 사진에 context.read()를 쓰셨는데
context.watch()를 써야 하는거 아닌가? 해서요
notifyListener()에 의해서 --> 반응하여 badge 함수가 불리는 거면
일회용인 read가 아닌 watch가 적절하지 않나 싶어서요...
명쾌한 답변 부탁드립니다 ㅎㅎ! 감사합니다..!
답변 1
1
안녕하세요 유하님
MyBadge 내부에서 addListener로 변경사항을 청취하기 때문에 read로 1회성 접근을 하셔도 됩니다.
또한 해당 위치는 InheritedWidget의 라이프사이클상 context.watch()로 접근할 수 없는 위치라서 read로만 접근할 수 있습니다.
감사합니다 🙂
1
InheritedWidget의 라이프사이클상 context.watch()로 접근할 수 없는 위치가 이해가 조금 안갑니다 ㅠㅠㅠ
우선 제가 이해한건 provider패키지는 내부적으로 InheritedWidget을 사용하여 상태관리를 구현했기 때문에 InheritedWidget 라이프사이클을 고려해야 한다는 거랑
context.read는 build 메서드 외부에서 주로 사용
context.watch는 주로 build 메서드 내에서 사용한다 이정도입니다.
1
Provider 코드 상에 주석으로 적혀있는 부분을 보시면, context.watch()는 StatelessWidget이나 StatefulWidget의 build 함수에서만 접근 가능하다고 적혀있습니다.
read와 달리 watch에만 이러한 제약 조건이 있는 원인은 내부적으로 InheritedWidget을 사용하는데, watch의 경우 접근하는 위젯이 위젯 트리에 등록된 뒤에만 InheritedWidget에 listener로 등록 가능하기 때문으로 이해하시면 될 것 같습니다.
수강 기한 연장 요청드려도될까요..
1
48
2
37.provider 실습 문제점, 카트에서 상품이 지워지지 않습니다.
1
75
2
다트 프로젝트
1
51
2
context.read<LangService>().toggleLang 해도 언어가 변경되는 이유
1
74
3
수강 기간 연장 신청 요청드립니다.
1
68
3
수강기간 연장 부탁드립니다.
1
58
3
제공해주신 flutter_design_system 라이브러리 질문입니다.
1
53
2
수강 기간 연장 부탁드립니다
1
52
2
수강 기한 연장
1
78
3
강의 잘 보고있습니다!
1
59
2
애뮬레이터 실행 오류
1
69
2
pdf 강의노트
1
62
2
수강기간 연장 부탁드립니다.
1
86
2
수강 기간 연장 요청
1
86
2
수강기간 연장 부탁드립니다
1
129
2
코드 생성기 - build runner 관련 오류
1
110
1
디자인 시스템 구성에 대해 질문 드립니다
2
145
2
CartItem 추가시
1
95
2
const 커스텀클래스
1
95
1
강의 수강 기간 연장 요청드립니다.
1
127
2
코드 생성기 - 실습 build runner 안 되는 분.
1
270
2
Flutter 강의자료 열리지 않는 문제
1
165
2
riverpod 프로젝트에 궁금한점이 있어 질문 남깁니다.
1
123
2
수강 기강 연장 부탁드리겠습니다! :ㅇ
1
88
2





