728x90
반응형
Riverpod이란?
상태 관리 라이브러리. 어떤 상태를 관리할까?
앱을 보면 수많은 데이터값들이 변하고있다. 장바구니에 몇개 들어가있는지, 메모하고 수정하고...
이런 상태를 쉽게 관리해주는 라이브러리이다.
일단 기존의 riverpod을 안쓴다면.......??
// 초기 상태 값
int _count = 0;
// 상태 값 증가 메서드
void _incrementCounter() {
setState(() {
_count++; // 상태 업데이트
});
}
// 상태 값 초기화 메서드
void _resetCounter() {
setState(() {
_count = 0; // 초기화
});
}
StatefulWidget로 만들어야한다. 뭐 이런식으로 UI를 계속 리빌드해줘야한다.
riverpod을 쓴다면
final counterProvider = StateProvider((ref) => 0);
class HomeScreen extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
//현재 상태 읽기
final count = ref.watch(counterProvider);
return Scaffold(
appBar: AppBar(title: Text("카운터 앱"),),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text("숫자: $count",
style: TextStyle(fontSize: 40, fontWeight: FontWeight.bold),),
SizedBox(height: 20,),
ElevatedButton(onPressed: () {
ref
.read(counterProvider.notifier)
.state++;
}, child: Text("숫자 증가")),
SizedBox(height: 10,),
ElevatedButton(onPressed: () {
ref
.read(counterProvider.notifier)
.state = 0;
}, child: Text("초기화"))
],
),
),
);
}
}
ref.watch와 ref.read등 좀 더 간단하게 상태를 관리하고 업데이트 가능하다.
728x90
반응형