반응형
Riverpod는 family와 autoDispose 두 가지 수식어(modifiers)를 제공합니다. 이 글에서는 family와 autoDispose 수식어에 대해서 설명합니다. family family 의 목적은 외부 파라미터를 전달하여 고유한 프로바이더를 가져오는 것입니다. 일반적인 family 의 사용 사례는 다음과 같습니다. FutureProvider와 family를 결합하여 ID에서 Message를 가져오는 경우. 번역을 처리하기 위해 현재 Locale 값을 프로바이더로 전달하는 경우. 사용방법 family 수식어를 사용하여 프로바이더를 생성하면 파라미터가 추가됩니다. 그러면 프로바이더는 이 파라미터를 사용하여 일부 상태를 계산하는 요소로 사용할 수 있습니다. 예를 들어 FutureProvid..
이번 글에서는 provider 상태를 결합하는 방법에 대해 알아봅니다. 프로바이더 상태 결합하기 프로바이더에서 다른 프로바이더의 상태 값를 읽어야 하는 경우가 많이 있습니다. 이를 위해서는 프로바이더 콜백에 전달된 ref 객체를 사용하고, ref의 watch 메소드를 사용할 수 있습니다. 예를 들어 다음 cityProvider 프로바이더를 살펴보겠습니다: final cityProvider = Provider((ref) => 'London'); 이제 cityProvider를 구독하고 싶은 다른 프로바이더를 만들어 봅니다. final weatherProvider = FutureProvider((ref) async { // `ref.watch`를 사용하여 다른 프로바이더를 구독합니다. // 구독할 프로바이더(..
이번 글에서는 Provider를 사용 방법에 대해 설명합니다. ref 객체 가져오기 Provider를 사용하려면 먼저 ref 개체를 가져와야 합니다. 이 ref 객체를 통해 위젯 또는 다른 Provider와 상호 작용할 수 있습니다. Provider로 부터 ref 객체 전달 받기 모든 Provider는 ref 객체를 파라미터로 전달 받습니다. final valueProvider = Provider((ref) { // 다른 Provider를 얻으려면 `ref`를 사용합니다. final repository = ref.watch(repositoryProvider); return repository.get(); }); 이 파라미터 ref 객체는 다른 객체로 전달 할 수도 있습니다. 일반적인 사용 사례는 Prov..
Provider는 Riverpod 애플리케이션에서 가장 중요한 부분입니다. Provider는 상태(state)를 캡슐화하여 해당 상태를 수신할 수 있도록 하는 객체(object)입니다. Provider를 사용하는 이유? 여러 위치에서 해당 상태에 쉽게 접근할 수 있습니다. Provider는 싱글톤(Singleton), 서비스 로케이터(Service Locator,), 의존성 주입(Dependency Injection) 또는 InheritedWidgets와 같은 패턴을 완전히 대체할 수 있습니다. 이 상태를 다른 Provider의 상태와 간단하게 결합할 수 있습니다. 여러 상태를 병합하여 하나의 상태에 정리하는데 어려움을 겪은 적이 있다면, Provider는 이를 위한 기능을 제공하고 있습니다. 앱의 성능..
Riverpod를 Dartpad에서 온라인으로 체험해 볼 수 있습니다. 패키지 설치하기 Riverpod 패키지 종류 사용 형태에 따라 아래 Riverpod 패키지 중 하나를 설치합니다. 패키지명 설명 flutter_riverpod 기본 패키지 hooks_riverpod Riverpod와 flutter_hooks을 함께 사용 riverpod Dart만 사용(Flutter 관련 클래스는 전혀 없음) flutter_hooks: 플러터 훅은 widget의 라이프사이클을 관리하는 새로운 종류의 객체입니다. 사용 방법은 React hooks과 매우 흡사합니다. fluuter_hooks가 제공하는 편리한 훅 함수를 사용할 수 있는 hooks_riverpod 패키지를 설치합니다. flutter_riverpod 패키지 ..
Riverpod(Provider보다 개선된)는 Flutter/Dart용 반응형 캐싱 프레임워크입니다. 네트워크 요청을 자동으로 가져오고, 캐싱하고, 결합하고, 재계산하는 동시에 오류를 처리할 수 있습니다. 최신 애플리케이션에는 사용자 인터페이스를 렌더링하는 데 필요한 모든 정보가 거의 제공되지 않습니다. 대신 데이터를 서버에서 비동기적로 가져오는 경우가 많습니다. 문제는 비동기 코드 작업이 어렵다는 것입니다. Flutter는 상태를 저장하는 몇 가지 방법을 제공하지만, 그 외에는 별다른 기능을 제공하지 않습니다. 따라서 많은 과제가 해결되지 않은 채로 남아 있습니다. 비동기 요청은 UI가 새로 고쳐질 때마다 다시 실행하는 것이 비합리적이므로 로컬에 캐시해야 합니다. 캐시가 있으므로 주의하지 않으면 캐시가..