오늘은 riverpod 라이브러리를 이용해, 전에 만들었던 ToDo App 구현에 들어갔다.
정말 많은 고민과 시행착오를 겪었기에 같은 실수를 반복하지 않기 위해 정리해야겠다.
riverpod에서 가장 헷갈리는 부분은 notifier와 provider의 관계이다.
어느정도 개념이 잡혔지만 레거시 방식과 코드 생성 방식에는 또 다른 차이가 있기에, 오늘은 코드 생성 방식을 위주로 정리하고자 한다.
추후, 다시 한번 레거시 방식으로 구현해볼 의향이 있다.
notifier는 compose에서 공부하던 viewmodel을 의미하는데, 단 하나의 상태만 관리할 수 있다.
정말 어디에 써먹으라는 건지 모르겠다..
Notifier의 종류는 대표적으로 3가지가 있다.
작년 말, riverpod 3.0 버전으로 업데이트 되며 달라진 점이 있다.
위 3가지 Notifier가 riverpod 3.0을 대표한다.

Provider는 전에 Provider 라이브러리에서 학습한 것과는 사뭇 달랐다.
단순히 viewmodel(notifier)과 ui 단의 징검다리 같은 역할을 하는 것 같았다.
전역으로 선언된 ProviderScope 내에서 서로의 종류를 나타낸 듯 하다.
Provider가 싱글톤 객체로 사용되는지도 궁금했다.
학습이 더 필요하겠지만, 아직까지는 "싱글톤이 아니다"쪽인듯 하다.
Generator로 학습하다 보니 이런 부분은 build_runner에게 맡길 수 있어서 좋았다.