본문 바로가기
플러터

Riverpod 프로바이더 종류

by s2jinny 2024. 4. 9.

provider 종류 

- Provider 

- StateProvider 

- StateNorifierProvider 

- FutureProvider 

- StreamProvider 

- ChangeNotifierProvider 

각 다른 타입을 반환해주고 사용 목적이 다르다.

모든 provider 은 글로벌하게 선언된다.

 

Provider 

가장 기본 베이스가 되는 Provider

아무 타입이나 반환 가능 

Service , 계산한 값등을 반환할 때 사용 

반환 값을 캐싱할 때 유용하게 사용된다.

빌드 횟수 최소화 가능

여러 Provider 의 값들을 묶어서 한번에 반환값을 만들어 낼 수 있다.

 

StateProvider 

ui 에서 직접적으로 데이터를 변경할 수 있도록 하고 싶을 때 사용

단순한 형태의 데이터만 관리 (int, double, String 등) 

Map, List 등 복잡한 형태의 데이터는 다루지 않음. 

복잡한 로직이 필요한 경우 사용하지 않음. 

  number ++ 정도의 간단한 로직으로만 한정.

 

StateNorifierProvider 

StateProvider 과 마찬가지로 ui에서 직접적으로 데이터를 변경할 숫 있도록 하고싶을 때 사용. 

복잡한 형태의 데이터 관리 가능( 클래스의 메소드를 이용한 상태관리) 

StateNotifier 을 상속한 클래스를 반환 

 

FutureProvider

Future 타입만 반환가능

API 요청의 결과를 반환할때 자주 사용

복잡한 로직 또는 사용자의 특정 행동뒤에 Future를 재실행하는 기능이 없음

필요할경우 StateNotifierProvider 사용

 

StreamProvider

Stream 타입만 반환가능

API 요청의 결과를 Stream으로 반환할때 자주 사용

Socket등

 

provider 종류  반환값 사용 예제 
provider  아무 타입 데이터 캐싱
StateProvider 아무 타입 간단한 상태값 관리
StateNotifierProvider StateNotifier를 상속한 값 반환  복잡한 상태값 관리
FutureProvider Future 타입 API 요청의 Future 결과값
StreamProvider Future 타입 API 요청의 Stream 결과값

 

ref.read vs ref.watch

• ref.watch는 반환값의 업데이트가 있을때 지속적으로 build 함수를 다시 실행해준다.

• ref.watch는 필수적으로 UI관련 코드에만 사용한다.

• ref.read는 실행되는순간 단 한번만 provider 값을 가져온다.

• ref.read는 onPressed 콜백처럼 특정 액션 뒤에 실행되는 함수 내부에서 사용된다.

'플러터' 카테고리의 다른 글

flutter : DioInterceptor  (0) 2024.06.15
flutter : context 가져오기  (0) 2024.06.15
bloc  (2) 2024.03.29
FCM .. 알림 설정  (1) 2024.03.17
플러터 Dart  (0) 2023.10.29