2024.04.28 - [Skills/Flutter] - [RiverPod] ref.watch, ref.listen, ref.read의 차이
이전 포스팅에서 ref에서 다뤘지만, select를 제외한 나머지 기능에 대한 포스팅이였습니다.
그러나 select 역시 ref의 주요 기능 중 하나이기 때문에 이번 글은 추가적으로 select에 대한 포스팅입니다.
select
Riverpod에서 select는 매우 유용한 기능으로, 프로바이더에서 특정 부분의 데이터만을 구독하고자 할 때 사용됩니다.
이를 통해 필요한 데이터 부분만을 선택하여 관찰하고, 해당 부분이 변경될 때만 위젯을 재빌드하도록 설정할 수 있습니다.
select는 성능 최적화에 큰 도움이 되며, 불필요한 빌드를 줄여줍니다.
사용법
select를 사용하여 프로바이더의 특정 값을 선택적으로 감시할 수 있습니다.
예를 들어, 사용자 모델에서 사용자의 이름만을 구독하고자 할 때, 다음과 같이 작성할 수 있습니다:
final userNameProvider = Provider((ref) => User(name: "John Doe", age: 30));
class UserNameWidget extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final String name = ref.watch(userNameProvider.select((User user) => user.name));
return Text(name);
}
}
기능 설명
선택 함수: select 메서드는 선택 함수를 인자로 받습니다.
이 함수는 프로바이더의 전체 상태 중에서 필요한 부분만을 반환합니다.
성능 최적화: select는 선택한 데이터가 변경될 때만 위젯을 재빌드합니다.
따라서, 전체 데이터 모델이 아니라 필요한 부분만 변경되었을 때의 처리를 최적화할 수 있습니다.
주요 이점
효율적인 리소스 사용:
필요한 데이터 부분만 업데이트하므로, 리소스 사용을 최적화하고 앱의 반응 속도를 향상시킬 수 있습니다.
코드의 명확성:
필요한 데이터 부분만 명시적으로 선택함으로써, 코드의 가독성과 관리성이 향상됩니다.
'Skills > Flutter' 카테고리의 다른 글
Margin, Padding의 개념과 EdgeInsets 클래스 (0) | 2024.05.01 |
---|---|
[RiverPod] ref.watch, ref.listen, ref.read의 차이 (0) | 2024.04.28 |
Scaffold, SafeArea, Expanded 위젯 알아보기 (0) | 2024.04.06 |