[Riverpod] 프로바이더는 언제 초기화되고 언제 폐기될까?

eltese·2023년 11월 12일
0

riverpod

목록 보기
2/3
post-thumbnail

초기화되는 시점

provider는 많은 리스너를 가질 수 있고, 다른 provider를 구독해 스스로 리스너가 될 수도 있다.
ref.watch(), ref.listen()은 리스너를 등록할 수 있게 해 주며 첫 번째 리스너가 등록될 때 프로바이더의 상태가 초기화된다. (ref.read()는 일회성 읽기만 가능하고 리스너 등록은 하지 않음.)

폐기되는 시점

프로바이더를 autoDispose로 선언했는지 아닌지에 따라 다르다.

autoDispose 없이 선언했을 때

  • ProviderScope가 삭제될 때까지 메모리에 상태를 유지함.
  • 즉, 사용자나 OS가 앱을 종료할 경우에 폐기된다.

autoDispose와 함께 선언했을 때

  • 마지막 리스너가 제거되면 폐기됨.
  • 위젯 트리에서 위젯이 사라질 때 같이 폐기된다.

riverpod generator를 사용한다면?

이 내용을 찾아 본 이유가 riverpod generator를 사용해 프로바이더를 생성하면 autoDispose가 디폴트라는 사실을 몰랐기 때문이다.
알 수 없는 이유로 자꾸만 초기화되는 상태값을 보며 답답했던 시간들아 이제는 안녕...

keepAlive로 상태를 유지시킬 수 있다.

profile
백엔드 주니어 개발자 EL과 앱 개발자 Altese가 함께 운영하는 블로그

0개의 댓글