[Riverpod] #1 Riverpod?

2023. 4. 4. 20:10Flutter

반응형

그동안은 flutter 상태관리 툴로 GetX를 많이 사용했다

GetX로 빠르게 만들어내는 것은 편했으나 flutter의 너무 많은 부분을 차지하고 있다는 의견이 있어 새로운 상태관리 툴을 써보자는 말이 나왔고 Riverpod을 사용해 보기로 결정

Riverpod

Provider의 단점을 보완한 상태관리 플러그인

Riverpod은 컴파일 타임 동안 안전하다.
Flutter SDK에 직접적으로 의존하지 않는다.
Riverpod는 위젯 트리에 직접적으로 의존하지 않는다.
Provider는 전역적으로 선언되며 응용 프로그램의 모든 위치에서 사용할 수 있다.
상태 또는 UI rebuild를 필요할 때만 한다.
Riverpod은 loading/error 케이스를 깔끔하게 다룰 수 있다.
등의 개선사항이 있다.


여러 종류의 패키지가 있으며 사용 목적에 따라 결정하면 된다.

flutter에서 사용하기 위해 flutter_riverpod을 설치하기로 하자

https://pub.dev/packages/flutter_riverpod

 

flutter_riverpod | Flutter Package

A simple way to access state from anywhere in your application while robust and testable.

pub.dev

Provider를 사용하기 위해선 먼저 전체 앱을 ProviderScope로 감싸줘야 한다. 이를 통해 프로젝트 전반에 provider 선언과 접근을 가능하게 한다.

void main() {
  runApp(
    ProviderScope(
      child: MyApp(),
    ),
  );
}

그 후 riverpod에서 정의한 WidgetRef를 통해 접근이 가능한데, 이 WidgetRef는 위젯과 provider를 상호작용 할 수 있도록 도와주는 역할을 하게 된다.

 

일단 provider를 생성해보자

다양한 provider들이 있지만 기본적으로 모두 동일한 방식으로 동작한다. 가장 보편적으로 사용하는 방법으로 전역변수로 선언하여 사용하는 방법이 있다.

final myProvider = Provider((ref) {
  return MyValue();
});

 다음은 provider의 종류에 대해 알아보자

반응형