본문 바로가기
Study/Flutter

Flutter 상태관리 종류 비교

플러터에서 상태관리(State Management)는 앱 개발의 핵심 중 하나다.

특히 앱이 커질수록 "상태를 어디서 어떻게 관리할지"에 따라 유지보수성과 확장성이 크게 달라지게된다.


🧠 상태관리란?

“앱의 화면에 보이는 데이터(상태)를 저장하고, 필요할 때 효율적으로 업데이트하는 기술”

예시:

int counter = 0; // 상태
setState(() {
  counter++;    // 상태 변경
});

🔥 왜 중요할까?

  • 버튼 클릭 → 화면 업데이트
  • 로그인 상태 유지
  • API 호출 결과 반영
  • 장바구니 목록, 필터 선택 등

➡ 상태 관리가 깔끔하게 구성돼야 코드가 엉키지 않게된다.


📊 상태관리 종류 & 비교

방법 난이도 특징

setState ★☆☆☆☆ 가장 기본, 위젯 내부에서만 사용 가능
InheritedWidget ★★☆☆☆ Flutter 기본 제공, 전역값 공유 가능
Provider ★★★☆☆ 공식 추천 방식, 가장 많이 사용됨
Riverpod ★★★★☆ Provider 진화형, 테스트/모듈화에 강함
BLoC ★★★★★ 큰 프로젝트/팀 개발에 적합, 구조 명확
GetX ★★★★☆ 라우팅 + 상태관리 + DI 포함, 문법 간결

📦 상태관리 패키지별 특징 요약

패키지 장점 단점 추천 대상

Provider 공식 추천, 학습 쉬움 코드 분산 가능성 초~중급 앱
Riverpod 글로벌 상태관리, 재사용성 굿 러닝커브 있음 테스트 중시, 중~고급 앱
BLoC 이벤트 중심 구조, 강한 아키텍처 boilerplate 많음 팀/대형 앱
GetX 쉬운 문법, 통합 기능 논란 있음 (디자인 철학 문제) 빠른 개발, MVP
MobX 반응형 프로그래밍 코드 제너레이션 필요 함수형 스타일 선호자

💡 추천 학습 순서 

  1. setState로 작동 원리 이해
  2. Provider로 분리와 전역 상태 배우기
  3. Riverpod로 테스트성과 확장성 익히기
  4. 이후 팀 환경에 따라 BLoC, GetX, MobX 등 고려