riverpod

dongeranguk·2024년 4월 2일
0

riverpod

플러터 프레임워크에서 자주 사용되는 상태관리 라이브러리
이 외 사용되는 라이브러리로는 provider, get, Bloc 등이 있다.

Riverpod 은 Provider 를 대체하기 위해 탄생하였다.

차이점

  • Provider 의 공급자는 InheritedWidget 의 래퍼로 위젯 트리 내부에 위치하지만, Riverpod 의 공급자는 Dart 객체이므로 위젯 트리 외부에서 정의되고 전역 final 변수로 선언된다.

공급자

Riverpod 은 많은 공급자를 제공하고 있는데, 여기서 (Async)NotifierProvider 와 StateProvider 만 사용하면 웬만한 상태 관리 로직은 구현할 수 있을 것 같다.

(Async)NotifierProvider 은 비동기 또는 동기 방식으로 notifier 를 수신하고 노출하는 데 사용된다.

공급자의 상태가 변경된 경우 notifier 에 변경점을 알리고, notifier 는 초기화되어 변경점을 나타낼 수 있다.

StateProvider 는 간단한 상태를 변경할 때 사용된다.
(게시글을 읽었다는 표시를 하기 위해 사용해보자)

공급자 정의 방식으로는 2가지가 존재한다.

  • 전역 변수 선언
final myProvider = Provider<?>((ref) => 'hello');	
  • 클래스 생성
part 'myProvider.g.dart';

@riverpod
class My extends _$My {
	
    @override
    List build() {
    	return [];
    }
}

위와 같이 클래스를 생성하기 위해서는 riverpod_generator, riverpod_annotation 라이브러리가 추가되어야 한다.

클래스를 작성하였다면, 터미널에서 flutter run build_runner build 커맨드를 입력하면 part 에 지정했던 이름의 dart 파일이 생성된다.

클래스 이름은 My 이지만
riverpod_generator 이 prefix 설정과 suffix 설정이 되어있으므로 접근할 때에는 ref.watch(myProvider) 같이 접근할 수 있다.

0개의 댓글