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 |