2026.01.08 (목)

오늘은 도저히 알 수 없는 익숙해진 줄 알았는데 지금 보니 또 어색한 Riverpod에 대해 공부를 해보았다. 앞으로도 계속 마주칠 친구 같아서 이해할 수 있을 때까지 정리해보려고 한다.
기초부터 ... 👶🏼
그나마 (?) 익숙한 이름이다 앱이 살아있는 동안 변할 수 있는 모든 데이터이다.
화면에 그려지고 데이터가 바뀔 때 화면을 새로 그려주는 과정을 상태관리 라고 한다.
Flutter는 위젯트리 구조로 최상단에 있는 데이터를 맨 마지막에 있는 자식 위젯에게 전달하려한다면? 부모가 자식에게 전달하고, 그 자식이 자식한테 전달하고,, 반복되어야 한다
중간에 있는 위젯들은 그 데이터가 필요 없어도 단순히 전달하기 위해 코드를 작성해야 한다. 앱이 커질수록 관리가 불편해질 수 있다.
Riverpod은 상태관리의 단점을 해결하기 위해 데이터의 중앙에서 역할을 한다.
int count = 0;count++;setState(() {});final counterProvider = NotifierProvider<Counter, int>(() => Counter());final count = ref.watch(counterProvider);onPressed: () { ... }ref.read(counterProvider.notifier).increment();ref.watch하고 있는 위젯을 알아서 찾아서 재빌드 시킴상태관리를 3가지로 정리와 Riverpod의 5가지 흐름을 비교했을 때, 상태관리는 꼭 데이터 바뀐 위젯을 찾아서 setState()를 호출해줘야 하지만 Riverpod은 위젯을 알아서 찾아서 재빌드를 해주는 장점이 있다.
| 구분 | 로컬상태(Local State) | 전역상태 (Global State) |
|---|---|---|
| 주체 | StatefulWidget(setState) | Riverpod(Provider) |
| 범위 | 해당 위젯 내부에서만 사용 | 앱 전체, 여러 화면 공유 |
| 예시 | 현재 페이지의 변화 효과 | 사용자 프로필 정보, 장바구니 목록 |
사실 Riverpod은 알아서 흘러가는 시스템으로 알아서 화면을 갱신해줘서 편하다고 하지만,, 아직 나는 사용법에 대해 익숙치 않아서 어디서 뭘 어떻게 써야할지 많이 헷갈린다..
상태관리는 데이터를 내가 끊어줘야 하는 번거로움이 있다. 한 화면을 관리하거나 작은 데이터를 사용할 때 유용하다.
Riverpod은 위젯 간에 이동이나 실제로 데이터가 변해야하는 화면만 다시 그려야할 위젯을 업데이트할 때 유용하다.