
Provider (MVP)

Bloc (MVVM)

생산성
쉽고 간결한 구문
사용하지 않은 리소스는 메모리에서 자동으로 제거해준다.
조직화
화면, 로직, 등등을 완전히 분리할 수 있다.
단순 상태관리
- 기존의 데이터와 변경되는 데이터가 같은지 확인하지 않는다.
- 수동으로 상태를 업데이트(update())해줘야 한다.
반응형 상태관리
- 데이터가 변화가 있을 때만 재 랜더링을 하게 된다.
- Obs()를 설정하여 그 안에 있는 변수들만 listene한다.
Provider 패키지 개발자가 Provider의 단점을 보완하기 위해
만들어낸 패키지
Provider와 흡사한 사용방법을 가지고 있다.
(ChangeNotify, .read() , .watch())

Riverpod으로 개선된 사항들 (공식홈)
- Riverpod은 컴파일 타임 동안 안전하다.
- Flutter SDK에 직접적으로 의존하지 않는다.
- Riverpod는 위젯 트리에 직접적으로 의존하지 않습니다.
- Provider는 전역적으로 선언되며 응용 프로그램의 모든 위치에서 사용할 수 있습니다.
- Riverpod는 위젯을 통해 제공자에 액세스할 수 있도록 하며 ScopedReader, 빌드 메소드에 전달되고 최종적으로 ConsumerWidget클래스 를 통해 소비됩니다.
- 상태 또는 UI Rebuild를 필요할 때만 한다.
- Riverpod은 loading/error 케이스를 깔끔하게 다룰 수 있다.
- devtool로 상태를 검사할 수 있다.
