
Riverpod 라이브러리 연결


관리할 scope 설정
최상단인 MyApp을 ProviderScope한테 던져주면 관리해야 될 모든 위젯의 트리를 다 알 수 있도록 설정한다. 내가 관리해야 할 scope를 알기 위해 하는 설정이다. 보통 전체 위젯 트리를 다 관리해야한다.

17:07~
HomePage(+HeaderPage, BottomPage) 분리

home_vm 파일 생성
vm은 viewmodel의 약어
homepage의 상태 관리할 파일
페이지 별로 만들면 된다(홈페이지 안에 헤더,바텀있는데 그것도 만들어야되나요?ㄴ)


창고 만들기 전에 Flutter Riverpod Snippets 설치

창고
창고에서 관리되는 데이터 타입은 하나임
필드 여러개면 하나의 클래스 타입으로 감싸서 써야됨

창고 이름, 창고가 관리하는 데이터 타입 순서임

창고에 오류 뜨는데 Notifier를 상속받은 창고여야 한다.


User 클래스를 관리한다면


창고 만들어질때 build가 실행되면서 초기화된다.
build 함수 안에 통신코드가 들어있고 return 하면 창고 초기화 못함 통신 끝날때까지 기다렸다가 초기화하면 화면 ux가 안좋아짐
→ riverpod이 좋은 이유
일단 통신 끝나기 전이니까 null을 넣고 통신은 비동기로 돌린다.
상태가 갱신되면 watch하고 있으면 구독자들이 알림을 받고 그림을 다시그린다.

기본세팅
import 'package:flutter_riverpod/flutter_riverpod.dart';
// 1. 창고 데이터 타입 (int이면 안 만들어도 됨) - dto와 똑같이 생긴
// 2. 창고
class HomeVM extends Notifier<int> {
// 창고가 만들어질때 초기화 메서드 (return 하는 값을 창고가 state로 관리함)
@override
int build() {
return 1;
}
}
// 3. 창고 관리자
final Provider = NotifierProvider<HomeVM, int>(() {
return HomeVM();
});
?
Notifier가 state라는 걸 가지고 있어서

행위를 변경해야함

창고관리자가 실행되면 homeVM이 리턴됨
다음 시간 수업 내용
- 창고 생성법
- 창고의 상태를 갱신하는법
- 창고 데이터 구독하는 법 - read/watch
(창고 출판,구독,만드는법)
문서 지금 보지마!!!!!! 선생님 코드 익숙해지고 나면 보든가
창고 생성 (1)
창고가 필요한 곳에서 생성해야된다.
headerPage에서는 상태값이 필요하고
bottomPage에서는 상태를 변경하는 게 필요하다.
HeaderPage로 간다.





HeaderPage
에서 homeProvider
watch함 다른 component에서
다른 곳에서 쓸 때 VM 공유 → 싱글톤
watch 두번해도 창고는 한번만 만들어진다.


출판하기
BottomPage
에서 출판할거임provider에 접근하려면 consu;merWidger이어야 WidgetRef를 받을 수 있고 이게 있어야 접근 가능
provider야 내가 니 창고의 메서드 하나만 호출할게
⇒ 창고에 접근해야 됨
창고에 접근하면 increase 호출 가능

내가 어떻게 접근하든 provider가 있으면 쓰고 없으면 만든다.
창고안에 접근해ㅓ서 state변경하는 행위
헤더페이지가 먼저 생성되니까 1과 2 사이에는 창고 안만들어짐
공급자는 다시 안그려짐

실습해보고 싶으면
유저 상세보기 detail 페이지
디테일 vm
username, password,email
상세보기 화면 아래쪽에는 인풋 태그 만들고 수정할 값 만들어서 클릭하면
그 값 땡겨서 상태 바꾸면 위에 화면만 다시 그려짐
Share article