상태란?

위젯이 빌드되는 동시에 읽을 수 있으며, 위젯의 생명 주기동안 변경할 수 있는 정보를 말한다. 앱의 규모가 크고 복잡도가 증가하면서 효율적인 상태관리를 위한 방법론이 필요하게 되었다.

Flutter에서 사용할 수 있는 대표적인 상태 관리 방법

일반적으로 난이도와 중요도에 따라 GetX < Provider < Riverpod 으로 사용하고 있는 추세이며, Riverpod이 인기있다.

GetX는 높은 추상화를 지원해서 많은 부분을 알아서 해결해주기 때문에 편리하지만, GetX 안에 하나의 생태계를 따로 구축하는 수준이라 한번 버그가 발생하면 디버깅에 많은 시간을 쏟아야하며 개발자가 처리할 부분이 별로 없기 때문에 이 도구를 통해 구조화에 대한 개념을 익히기 어렵다.

BLoC은 구글에서 만든 상태관리 방법으로 가장 플러터의 개발 철학과 일치하는 상태관리 기법이지만, 비교적 어렵고 복잡해서 러닝커브가 가파르다.

Riverpod은 Provider의 고질적인 문제를 고쳐서 Provider 개발자가 만든 상태관리 패키지다. 개발자가 Provider보단 Riverpod을 사용하는걸 추천하며 고도화가 진행됨에 따라 Riverpod 내부에서 Provider 지원을 중단할 예정이라고 하니 Riverpod을 사용하는게 좋다. GetX보단 어렵지만, BLoC보단 쉬운편이다.

Cubit은 이 BLoC을 간소화 한 상태관리 방법이다.