기존 Flutter 상태 관리(setState, Provider, GetX) 사용 시 불필요한 UI 리빌드, 복잡한 테스트, 리소스 정리의 어려움 등 개발자들이 겪는 일반적인 문제들을 Riverpod이 해결하고자 합니다. 🐛
Riverpod은 2017년 setState/InheritedWidget 도입 후 대규모 앱의 비효율성 인지, 2018-2019년 Provider 출시(Ramy Rosel)를 거쳐, Provider의 한계(context 의존성, 테스트 복잡성)를 극복하기 위해 2020년 동일 저자가 개발한 솔루션입니다. 🕰️
Riverpod의 핵심 장점은 위젯 context에 의존하지 않는 순수 Dart 코드, 강력한 컴파일 타임 안전성, 자동화된 의존성 주입, 테스트 용이성(test-first), 세밀한 스코핑 및 리소스 자동 해제(autoDispose) 기능 제공입니다. 🛡️
Riverpod 아키텍처는 runApp 이전에 ProviderScope로 전체 앱을 감싸며, 모든 Provider는 위젯 트리와 독립적으로 ProviderScope 내에 존재하여 어떤 위젯에서든 ref 객체를 통해 쉽게 접근 가능합니다. 🌳
Riverpod V1(2021년)에서는 Provider, StateProvider, FutureProvider, StreamProvider 등 다양한 프로바이더 타입과 UI 업데이트를 위한 ConsumerWidget, WidgetRef가 도입되었습니다. 🚀
Riverpod V2(2023년)는 보일러플레이트 코드 감소, riverpod_generator를 통한 코드 생성 지원, Notifier 및 AsyncNotifier로 API 호출 효율적 처리, 특정 위젯만 업데이트하는 .select 기능, family 및 autoDispose 기능 강화 등 대규모 업데이트를 포함합니다. ✨
본 강의 로드맵은 1단계(수동 프로바이더 및 컨슈머 학습)와 2단계(코드 생성(riverpod_generator) 활용)로 구성되며, 각 단계는 핵심 프로바이더, 비동기 처리, 성능 최적화, 테스트, 실제 앱 개발 등을 심층적으로 다룹니다. 🗺️