Riverpod에서 ref.watch, ref.listen, ref.read는 프로바이더의 데이터를 다루는 세 가지 다른 접근 방식을 제공합니다.
각각은 다음과 같은 목적과 사용법을 가지고 있습니다:
1. ref.watch
목적: ref.watch는 프로바이더의 값이 변경될 때마다 위젯을 다시 빌드하도록 요청합니다.
이는 주로 UI와 직접적으로 연관된 데이터를 다룰 때 사용됩니다.
사용법: ref.watch를 호출하면 프로바이더의 현재 상태를 반환하며,
해당 프로바이더의 값이 변경될 때마다 위젯이 자동으로 다시 빌드됩니다.
2. ref.listen
목적: ref.listen은 프로바이더의 값이 변경될 때마다 콜백 함수를 실행시키지만, 위젯의 빌드를 트리거하지는 않습니다.
이는 데이터의 변화에 반응하여 특정 작업을 수행하고 싶을 때 사용되며, UI 업데이트가 필요 없을 때 유용합니다.
사용법: ref.listen에는 프로바이더와 콜백 함수를 인자로 전달합니다.
값이 변할 때마다 전달된 콜백이 실행되어 처리가 이루어집니다.
3. ref.read
목적: ref.read는 프로바이더의 현재 값을 반환하지만, 값의 변경을 구독하지 않습니다.
즉, ref.read를 사용하면 값을 한 번 읽을 수는 있지만, 후속 값 변경에 대해서는 알 수 없습니다. 이는 단발성으로 데이터를 읽어야 할 때 사용됩니다.
사용법: ref.read를 호출하면 프로바이더의 현재 값을 반환합니다.
이 메소드는 일반적으로 이벤트 처리나 조건적 로직 수행 시 사용됩니다.
요약
ref.watch: 값이 변할 때마다 위젯을 재빌드.
ref.listen: 값이 변할 때마다 콜백 함수를 실행하지만, 위젯 재빌드는 하지 않음.
ref.read: 값을 읽지만, 후속 변경을 추적하지 않음.
'Skills > Flutter' 카테고리의 다른 글
Margin, Padding의 개념과 EdgeInsets 클래스 (0) | 2024.05.01 |
---|---|
[RiverPod] ref select 기능 (0) | 2024.04.28 |
Scaffold, SafeArea, Expanded 위젯 알아보기 (0) | 2024.04.06 |