[flutter] Riverpod에서 상태를 공유하는 방법은 무엇인가요?

Riverpod Logo

Riverpod은 Flutter 상태 관리 라이브러리입니다. Riverpod를 사용하면 앱에서 상태를 효율적으로 공유하고 업데이트할 수 있습니다. Riverpod는 Provider 패키지의 개선된 버전이며, 상태 관리를 보다 간편하게 할 수 있도록 도와줍니다.

Riverpod에서 상태를 공유하는 방법은 아래와 같습니다.

  1. Provider를 사용하여 상태를 공유할 수 있습니다. 예를 들어, Provider<int>((ref) => 0)와 같이 Provider를 정의할 수 있습니다. 이 Provider를 사용하면 상태를 읽고 업데이트할 수 있습니다. Provider 내부에서는 ref.watch()를 사용하여 상태를 읽을 수 있고, ref.read()를 사용하여 상태를 업데이트할 수 있습니다.

예시:

final countProvider = Provider<int>((ref) => 0);

class MyApp extends ConsumerWidget {
  @override
  Widget build(BuildContext context, ScopedReader watch) {
    final count = watch(countProvider); // 상태를 읽음

    return Scaffold(
      appBar: AppBar(
        title: Text('Riverpod Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'Count: $count',
              style: TextStyle(fontSize: 24),
            ),
            ElevatedButton(
              onPressed: () => context.read(countProvider).state++, // 상태를 업데이트함
              child: Text('Increment'),
            ),
          ],
        ),
      ),
    );
  }
}

void main() {
  runApp(
    ProviderScope(
      child: MyApp(),
    ),
  );
}
  1. ConsumerWidget을 사용하여 상태를 읽고 업데이트할 수 있습니다. ConsumerWidget은 위젯을 빌드할 때 상태가 변경될 때마다 자동으로 다시 빌드됩니다. 이를 통해 상태의 변화를 캡처하고 앱을 업데이트할 수 있습니다.

위의 예시에서 MyAppConsumerWidget을 상속하고 있습니다. build 메서드 내에서 ScopedReader를 통해 상태를 읽고 업데이트할 수 있습니다. 이를 통해 상태 변화에 맞게 위젯을 업데이트할 수 있습니다.

이것이 Riverpod에서 상태를 공유하는 기본적인 방법입니다. Riverpod는 여러 고급 기능과 편리한 API를 제공하여 상태 관리를 더욱 효율적으로 할 수 있습니다. 자세한 내용은 Riverpod 공식 문서를 참조하시기 바랍니다.