구글에서는 UI와 데이터 처리 로직을 분리하기 위해 BLoC 패턴을 권장하였는데, 사용하기 어렵다는 단점이 있었고, 단순한 로직을 구성하려 해도 최소 4개의 클래스를 만들어야 됐다. 그래서 추가적인 상태관리를 지원하게 되었다.
참고 문서 : https://pub.dev/packages/provider
Widget build(BuildContext context){
return MultiProvider(
providers: [
ChangeNotifierProvider<CounterViewModel>(create: (_) => CounterViewModel()),
],
child: HomeView(),
);
}
class CounterViewModel with ChangeNotifier{
int _count = 0;
int get count => _count;
void increase(){
_count++;
notifyListeners();
}
}
// 호출
CounterViewModel _counter = Provider.of<CounterViewModel>(context, listen: false);
반응형 호출
Consumer<CounterViewModel>(builder:(_, CounterViewModel viewModel, __){
return Text(viewModel.count);
}
)