[Flutter] 11. Riverpod

김주희's avatar
Jun 08, 2025
[Flutter] 11. Riverpod
notion image
 

Riverpod 라이브러리 연결

notion image
notion image
 

관리할 scope 설정

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

HomePage(+HeaderPage, BottomPage) 분리

notion image
 

home_vm 파일 생성

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

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

notion image
 

창고

창고에서 관리되는 데이터 타입은 하나임
필드 여러개면 하나의 클래스 타입으로 감싸서 써야됨
 
 
notion image
창고 이름, 창고가 관리하는 데이터 타입 순서임
notion image
창고에 오류 뜨는데 Notifier를 상속받은 창고여야 한다.
 
notion image
notion image
 
User 클래스를 관리한다면
notion image
 
 
notion image
 
창고 만들어질때 build가 실행되면서 초기화된다.
 
build 함수 안에 통신코드가 들어있고 return 하면 창고 초기화 못함 통신 끝날때까지 기다렸다가 초기화하면 화면 ux가 안좋아짐
→ riverpod이 좋은 이유
일단 통신 끝나기 전이니까 null을 넣고 통신은 비동기로 돌린다.
상태가 갱신되면 watch하고 있으면 구독자들이 알림을 받고 그림을 다시그린다.
notion image
 

기본세팅

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라는 걸 가지고 있어서
notion image
행위를 변경해야함
 
notion image
 
 
창고관리자가 실행되면 homeVM이 리턴됨

다음 시간 수업 내용

  1. 창고 생성법
  1. 창고의 상태를 갱신하는법
  1. 창고 데이터 구독하는 법 - read/watch
(창고 출판,구독,만드는법)
 
문서 지금 보지마!!!!!! 선생님 코드 익숙해지고 나면 보든가

창고 생성 (1)

창고가 필요한 곳에서 생성해야된다.
headerPage에서는 상태값이 필요하고
bottomPage에서는 상태를 변경하는 게 필요하다.
 
HeaderPage로 간다.
notion image
notion image
notion image
 
 
 
notion image
notion image
 
 
HeaderPage에서 homeProvider watch함
다른 component에서
다른 곳에서 쓸 때 VM 공유 → 싱글톤
 
watch 두번해도 창고는 한번만 만들어진다.
notion image
notion image
 
 
 

출판하기

BottomPage에서 출판할거임
provider에 접근하려면 consu;merWidger이어야 WidgetRef를 받을 수 있고 이게 있어야 접근 가능
 
provider야 내가 니 창고의 메서드 하나만 호출할게
⇒ 창고에 접근해야 됨
창고에 접근하면 increase 호출 가능
notion image
 
내가 어떻게 접근하든 provider가 있으면 쓰고 없으면 만든다.
창고안에 접근해ㅓ서 state변경하는 행위
 
헤더페이지가 먼저 생성되니까 1과 2 사이에는 창고 안만들어짐
 
 
공급자는 다시 안그려짐
 
 

notion image
 

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

jay0628