본문 바로가기
Flutter

Flutter 상태관리 라이브러리 Riverpod

by 히예네 2024. 12. 8.
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
반응형