728x90
반응형
Flutter 상태 관리: RiverPod 소개와 활용법
Flutter에서 상태 관리를 위해 다양한 도구를 사용할 수 있지만, RiverPod는 코드의 간결성과 테스트 용이성을 높여주는 강력한 상태 관리 도구입니다. 이번 글에서는 RiverPod의 기본 사용 방법과 몇 가지 예제를 통해 이를 활용하는 방법을 알아보겠습니다.
1. RiverPod란?
RiverPod는 Flutter의 상태 관리 패키지로, Provider의 한계를 극복하기 위해 만들어졌습니다. 주요 특징은 다음과 같습니다:
- 명확한 상태 관리: 상태를 명확하게 정의하고 관리할 수 있습니다.
- 컴파일 타임 검증: 잘못된 사용을 컴파일 시점에 감지합니다.
- 독립적 동작: Flutter 위젯 트리에 의존하지 않고 상태를 관리합니다.
2. RiverPod 기본 사용법
2.1 ProviderScope로 감싸기
RiverPod을 사용하려면 반드시 ProviderScope로 앱을 감싸야 합니다.
void main() { runApp(ProviderScope(child: MyApp())); }
2.2 ConsumerWidget 사용
ConsumerWidget을 사용하면 WidgetRef를 통해 상태에 접근할 수 있습니다.
class TodoPage extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final todo = ref.watch(todoProvider); return Text('할 일: ${todo.description}'); } }
3. RiverPod의 주요 Provider 종류
3.1 Provider
한 번만 데이터를 제공하며, 상태가 변하지 않는 정적인 데이터에 적합합니다.
final todoProvider = Provider<Todo>((ref) { return Todo(isCompleted: true, description: '상태 관리 배우기'); });
3.2 StateNotifierProvider
상태 변경이 필요한 경우 사용하며, 상태와 변경 메서드를 함께 관리합니다.
class FruitStore extends StateNotifier<String> { FruitStore(super.state); void changeData(String newFruit) => state = newFruit; } final fruitProvider = StateNotifierProvider<FruitStore, String>((ref) { return FruitStore('사과'); });
4. RiverPod 활용 예제
4.1 Todo 관리
Provider를 사용하여 단순한 Todo 객체를 관리합니다.
final todoProvider = Provider<Todo>((ref) { return Todo( isCompleted: false, description: 'RiverPod 배우기', ); });
4.2 과일 상태 변경
StateNotifierProvider를 사용하여 과일 이름을 관리하고 버튼 클릭 시 상태를 변경합니다.
ElevatedButton( onPressed: () { ref.read(fruitProvider.notifier).changeData('딸기'); }, child: Text('딸기로 변경'), );
4.3 책 리스트 관리
StateNotifierProvider로 책 리스트를 관리하고 새로운 책을 추가합니다.
final myBookStoreProvider = StateNotifierProvider<MyBookStore, List<String>>((ref) { return MyBookStore(); }); class MyBookStore extends StateNotifier<List<String>> { MyBookStore() : super(\[\]); void addBook(String book) { state = \[...state, book\]; } }
5. 정리
RiverPod에서 기억해야 할 개념
- ref.read(): 현재 상태를 한 번 가져옴.
- ref.watch(): 상태 변경을 구독.
- StateNotifierProvider: 상태와 변경 메서드를 함께 관리.
RiverPod의 장점
- 간단한 상태 관리: 상태 정의와 관리가 명확합니다.
- 테스트 가능성: 위젯 트리와 독립적으로 동작하여 테스트하기 쉽습니다.
- 확장성: 다양한 상태 관리 요구 사항에 대응할 수 있습니다.
6. 예제 코드 전체 보기
main.dart
void main() { runApp(ProviderScope(child: MyApp())); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: BookPage(), ); } }
book.dart
final myBookStoreProvider = StateNotifierProvider<MyBookStore, List<String>>((ref) { return MyBookStore(); }); class MyBookStore extends StateNotifier<List<String>> { MyBookStore() : super(\[\]); void addBook(String book) { state = \[...state, book\]; } }
RiverPod은 Flutter에서 상태 관리를 보다 간단하고 강력하게 구현할 수 있는 도구입니다. 프로젝트에 맞는 Provider를 선택해 활용해보세요!
728x90
반응형
'Flutter' 카테고리의 다른 글
[flutter] 상태관리되는 ToDo List 만들어보기 (0) | 2025.01.22 |
---|---|
[flutter] 상태관리가 되는 앱 만들어 보기 02 (inheritedWidget) (0) | 2025.01.20 |
[flutter] 상태관리가 되는 앱 만들어 보기 01 (1) | 2025.01.20 |
댓글