Riverpod#3: read(), watch() 정리.

Mark Choi
Apr 18, 2024

리버팟에서 헷갈릴 수 있는 부분은 read와 watch 그리고 notifier 부분이다.

final nameProvider= StateProvider<String?>((ref) => "");

해당 Provider는 이름을 가지고 있는 Provider다. 기본값이 “”(빈값)이고, 이렇게 선언하면 글로벌하게 모든 곳에서 접근이 가능하다.

final nameNotifier= ref.read(nameProvider.notifier);

를 하면, 1회성으로 해당 프로바이더의 notifier를 가져온다.

final nameString= ref.read(nameProvider);

이 코드는 그냥 값을 읽어오는게 된다. “”이 return 된다. 여기서 수정하거나 state를 반영하는 등의 조작은 되지 않는다.

위 nameNotifier는 해당 Provider를 update하거나 state에 접근하는 권한이 생긴다.

final nameWatch= ref.watch(nameProvider);

watch() 를 하면, 해당 Provider의 값이 바뀔때마다, 이 watch가 소속해있는 Consumer 또는 ConsumerWidget을 rebuild하게 된다.

이 내용은 다음 글에서 다루기로 한다.

--

--