riverpod 4

riverpod의 AsyncStateProvider의 AsynData관련 오류 디버깅

발생 상황 AsyncGuard를 통해 가공한 값을 사용하는 과정에서 nullcheck를 명시하였음에도 불구하고 Exception이 발생하는 상황Sample Codeclass TempAsyncNotifier extends _$TempAsyncNotifier{ ... foo() async { state = await AsyncData.guard( .... ); return state.value?.data ; }​}원인과 해결 방법AsyncValue는 [AsyncData, AsyncLoading, AsyncError] 이렇게 3가지의 형태로 분리되어 사용됩니다. riverpod(provider)에서 제공하는 값이며 비동기 상태변화가 일어날 경우 사용하라고 제공한 타입들입..

flutter 2024.09.17

Flutter Riverpod 테스트 케이스 활용 + mockito

우선 테스트 케이스를 구성하는데 있어서 중요한 부분은 테스트의 범위를 정확히 설정하는 것 이다. 좋은 함수란 하나의 기능을 확실하게 잘 수행하는 함수이며, 이는 테스트 케이스 역시 해당하는 부분이다. 우선 로직이 복잡하게 구성되어 있다면 테스트 케이스는 잘 구현될 수 없다. 로직의 품질과 테스트 케이스의 품질은 정비례한다는 것을 먼저 알고 코드를 구성해야 한다. 테스트를 할 코드는 다음과 같다. @riverpod class SampleStateNotifier extends _$SampleStateNotifier { late final Repository repository; @override BaseSampleState build() { repository = ref.watch(clientReposito..

flutter 2023.06.10

riverpod2.0 codegeneration 학습 1

CodeGenerator를 통해 provider를 생성하며 해당 provider들의 생성 및 dispose에 대해서 알아보자 provider는 여러가지 기준으로 분류할 수 있다. 분류의 기준 중 하나로 [ 함수 / 클래스 ] 가 있다. 이번 글에서는 함수형 provider들의 생성 및 사용에 대하여 기술한다. 0. observer 프로바이더들의 생성 및 변경, 삭제 이벤트를 확인하기 위해 observer를 등록하여 로그를 찍도록 하였다. ProviderObserver 객체를 상속받아 원하는 형태로 사용 가능하며, 용도에 따라서 여러 observer를 추가하여 사용할 수 있다. import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package..

flutter 2023.05.01

리버팟 2.0 간단한 공부 정리

최근 현업 프로잭트에서 riverpod을 사용하여 프로젝트를 진행하는 중이다. 또한 flutter discord 채널을 통해서 riverpod 관련 발표자료를 공유받아 최근 정리하였다. 들어가기 전에 간단한 사견 개인 공부로는 bloc을 사용해서 프로젝트를 진행하고 있는데 아무래도 상태관리를 지원하는 패키지인만큼 유사한 부분들이 많이 보인다. state를 중심으로 state의 변화에 따라 UI의 동작을 결정한다는 측면에서는 유사한 측면을 보인다. riverpod은 riverpod 하나로 서비스로케이터, 싱글톤, 의존성 주입 같은 요소들을 전부 할 수 있어서 사용하는 측면에서 편리하다는 느낌을 받는다. 추가적으로 riverpod내부에서 다른 riverpod을 결합할 수 있다는 특징이 로직을 설계하는 상황에..

flutter 2023.04.23