- ref는 다른 Provider에 쉽게 접근할 수 있는 역할을 합니다.
- ref는 Provider의 라이프사이클을 관리합니다.
- ref.read(): 다른 Provider의 값을 읽을 때 사용.
- ref.watch(): 다른 Provider의 상태를 구독하고, 상태가 변경되면 자동으로 반응.
- ref.listen(): 상태가 변경될 때 특정 로직을 실행할 때 사용.
lib/providers/provider/post_repository_provider.dart 파일 생성
// PostRepositoryImpl 인스턴스를 제공하는 Riverpod Provider 계열입니다.
// 컨테이너에 넣는 코드
import 'package:class_mvvm/providers/provider/dio_provider.dart';
import 'package:class_mvvm/repository/post_repository_impl.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
// (ref) {...} 익명 함수이며, ref는 Riverpod에서 제공하는 통로를 담당하는 객체입니다.
// ref 를 통해 프로바이더 내에서 다른 프로바이더를 읽거나 라이프 사이클을 관리할 수 있다.
final postRepositoryProvider = Provider<PostRepositoryImpl>((ref){
// ref 객체를 통해 다른 Provider 에 접근을 마음대로 할 수 있다
final dio = ref.read(dioProvider);
// 의존성 주입 -> dio는 Provier가 관리하고 있는 객체라 프로바이더를 통해서 가져 왔다.
return PostRepositoryImpl(dio);
});