lib/providers/state_noti_provider/post_detail_view_model_provider.dart
// 새로운 개념 추가
import 'package:class_riverpod_mvvm/providers/provider/post_respisitory_provider.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../models/post.dart';
import '../../view_models/post_detail_view_model.dart';
final postDetailViewModelProvider
= StateNotifierProvider.family<PostDetailViewModel, AsyncValue<Post>, int>((ref, postId) {
// 1. postId 값은 family 를 통해 전달받은 외부 매개변수로, 특정 게시글을 식별하는데 사용 된다.
final postRepository = ref.read(postRepositoryProvider);
return PostDetailViewModel(postRepository, postId);
});
1. StateNotifierProvider.family<T, S, A> 형식으로 정의합니다.
- T: StateNotifier 타입 (PostDetailViewModel)
- S: 관리할 상태의 타입 (AsyncValue<Post>)
- A: 외부에서 전달받을 매개변수의 타입 (int)
2. ref.read(postRepositoryProvider):
- `ref`는 Provider 간의 의존성을 관리하고 주입하는 객체입니다.
- `postRepositoryProvider`를 읽어서 해당 Provider로부터 postRepository 인스턴스를 가져옵니다.
3. return PostDetailViewModel(postRepository, postId):
- ViewModel을 생성하는 과정에서 postRepository와 postId를 주입하여,
해당 포스트의 상세 정보를 관리할 수 있도록 합니다.
'Flutter > MVVM 활용' 카테고리의 다른 글
[Flutter] (MVVM 활용) 게시글 생성 화면의 뷰 모델(PosCreateViewModel) 만들어 보자 (0) | 2024.11.22 |
---|---|
[Flutter] (MVVM 활용) PostDetailView 화면 완성 하기 - 11 (0) | 2024.11.22 |
[Flutter] (MVVM 활용) PostDetailViewModel 만들기(상세보기 화면 데이터 관리) - 9 (0) | 2024.11.19 |
[Flutter] (MVVM 활용) PostListPage 화면을 만들어 보자 그런데 뷰 모델은 어떻게 가지고 올까? - 8 (0) | 2024.11.19 |
[Flutter] (MVMM 활용) viewModel 을 관리하는 Provider 계열을 만들어 보자 - 7 (0) | 2024.11.19 |