상태 관리
2024년 12월 2일1분 미만기술문서
상태 관리 (State Management)
Flutter에서 상태 관리는 애플리케이션의 상태를 효과적으로 관리하고 UI에 필요한 데이터를 동기화하는 데 필수적인 역할을 합니다.
상태 관리는 Flutter 애플리케이션 개발에서 가장 중요한 개념 중 하나이며, 올바르게 관리하지 않으면 애플리케이션의 복잡성이 증가할 수 있습니다.
상태 관리의 기본 개념
Flutter 애플리케이션에서 **상태(state)**란 다음을 포함하는 모든 데이터를 나타냅니다:
- UI에서 표시되는 데이터
- 사용자 입력
- 데이터베이스나 API에서 가져온 데이터
상태의 분류
Ephemeral State (일시적 상태):
- 하나의 위젯 내에서만 유지되는 상태입니다.
- 예: TextField의 입력값, 체크박스 선택 상태 등
StatefulWidget을 사용하여 관리합니다.
App State (애플리케이션 상태):
- 애플리케이션 전반에 걸쳐 공유되는 상태입니다.
- 예: 사용자 인증 정보, 장바구니 데이터 등
- 별도의 상태 관리 라이브러리를 사용하여 관리합니다.
플러터 상태 관리 유형
플러터에서 상태 관리(State Management)는 애플리케이션의 상태를 효과적으로 관리하기 위해 여러 가지 접근 방식을 제공합니다. 다음은 주요 상태 관리 방법들입니다:
setState
- 가장 기본적인 상태 관리 방법으로, 간단한 상태 변화에 적합합니다.
Provider
- InheritedWidget을 기반으로 한 상태 관리 패키지로, 사용하기 쉽고 확장성이 뛰어납니다.
Riverpod
- Provider의 대안으로, 더 안전하고 간단한 상태 관리를 제공합니다.
Bloc (Business Logic Component)
- 이벤트 기반 상태 관리 라이브러리로, 큰 프로젝트나 복잡한 상태 로직에 적합합니다.
GetX
- 간단하면서도 강력한 상태 관리와 종속성 관리 기능을 제공합니다.
각 상태 관리 방법은 프로젝트의 요구 사항 및 복잡성에 따라 선택할 수 있습니다.
상태 관리의 종류와 방법
setState
- Flutter에서 기본적으로 제공되는 간단한 상태 관리 방법입니다.
- 특정 위젯의 상태만 업데이트할 수 있으며 소규모 애플리케이션에서 유용합니다.
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
int counter = 0;
void incrementCounter() {
setState(() {
counter++;
});
}
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('\$counter'),
ElevatedButton(
onPressed: incrementCounter,
child: Text('Increment'),
),
],
);
}
}장점:
- 간단하고 직관적입니다.
단점:
- 상태가 복잡해질 경우 관리가 어렵습니다.
- 위젯 트리가 깊어질수록 비효율적입니다.
상태 관리 선택 기준
앱 규모:
- 소규모 앱:
setState - 중간 규모:
Provider,Riverpod,GetX - 대규모 앱:
Bloc,Redux
복잡성:
- 복잡한 비즈니스 로직:
Bloc - 단순한 상태 관리:
Provider,GetX
러닝 커브:
- 낮음:
setState,GetX - 높음:
Bloc,Riverpod
기업자
abdulaziz박종열