Coram Deo

[Flutter] 상태관리(State Management)란? 본문

Flutter

[Flutter] 상태관리(State Management)란?

탁탁슝 2024. 7. 19. 15:45

상태 관리(State Management)란 무엇일까?

상태 관리

상태관리란 애플리케이션에서 데이터의 상태를 관리하고, 이 상태가 변경될 때 UI를 업데이트하는 과정을 의미한다. 특히 Flutter와 같은 UI 프레임워크에서는 상태 관리가 매우 중요하다.

 

상태 관리의 기본 개념

  1. 상태(state): UI가 보여주는 데이터의 현재 상태를 말합니다. 예를 들어, 사용자 입력 값, API 호출 결과, 버튼 클릭 상태 등이 있다.
  2. 상태 변경: 상태가 변경되면 UI도 이에 따라 변경되어야 한다.
  3. 상태 저장: 상태는 메모리에 저장되며, 사용자가 앱을 사용하면서 상태가 변경된다.

상태 관리의 필요성

상태 관리는 사용자 인터페이스(UI)를 동적으로 업데이트하는 데 필수적이다.

예를 들어, 버튼을 클릭하면 화면에 숫자가 증가하거나, 사용자가 텍스트 필드에 입력하면 화면에 그 텍스트가 표시되는 것과 같은 동작을 위해 상태를 관리한다.

  • UI 업데이트: 상태가 변경되면 UI가 자동으로 업데이트되어야 한다.
  • 데이터 동기화: 앱의 여러 부분에서 동일한 상태를 일관성 있게 사용할 수 있어야 한다.
  • 코드 구조화: 상태 관리를 잘하면 코드가 더 읽기 쉽고 유지보수하기 쉬워진다.

그렇다면 상태관리는 어떻게 할까? 상태관리에는 여러 종류가 있다.

1. setState와 StatefulWidget

가장 기본적인 상태 관리 방법이다. 간단한 애플리케이션이나 작은 위젯에서 사용할 수 있다.

 

2. InheritedWidget과 InheritedModel

InheritedWidget은 위젯 트리의 특정 부분에서 데이터를 전달하고, 하위 위젯들이 이 데이터에 접근할 수 있게 해준다. 이는 주로 전역 상태를 관리하거나, 여러 위젯에서 공통으로 사용하는 데이터를 전달할 때 유용하다.

 

3. Provider 패키지

Provider는 Flutter에서 가장 널리 사용되는 상태 관리 패키지 중 하나로, Google이 권장하는 방법이다. InheritedWidget을 보다 사용하기 쉽게 만든 것으로 생각할 수 있다.

 

4. Riverpod

Riverpod은 Provider의 한계를 극복하고자 만든 또 다른 상태 관리 패키지이다. 더 안전하고, 테스트하기 쉬우며, 유지보수가 용이한 상태 관리를 제공한다.

 

5. Bloc 패턴

Bloc(Business Logic Component)은 상태 관리와 비즈니스 로직을 분리하여 유지보수가 쉽도록 하는 패턴이다. 이벤트 기반으로 상태를 관리하며, 상태가 변경될 때마다 새로운 상태를 방출한다.

 

6. GetX

GetX는 상태 관리, 종속성 관리, 라우팅 등을 하나의 패키지에서 제공하는 다기능 패키지이다. 매우 경량화되어 있으며, 단순하고 직관적인 API를 제공한다.