본문 바로가기

Flutter

riverpod 과 MVVM 활용 - PostRespository를 중앙에서(컨테이너) 관리하는 Provider 계열을 만들어 보자(5)

  • ref는 다른 Provider에 쉽게 접근할 수 있는 역할을 합니다.
  • ref는 Provider의 라이프사이클을 관리합니다.
  • ref.read(): 다른 Provider의 값을 읽을 때 사용.
  • ref.watch(): 다른 Provider의 상태를 구독하고, 상태가 변경되면 자동으로 반응.
  • ref.listen(): 상태가 변경될 때 특정 로직을 실행할 때 사용.

 

// PostRepositoryImpl 인스턴스를 제공하는 Riverpod Provider 계열 입니다.

// 컨테이너에 넣는 코드
import 'package:class_riverpod_mvvm/providers/provider/dio_provider.dart';
import 'package:class_riverpod_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는 Provider 가 관리하고 있는 객체라 프로바이더를 통해서 가져 왔다.
  return PostRepositoryImpl(dio);
});
728x90