일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- object클래스
- 참조형 매개변수
- 인스턴스 메서드
- 운영체제의 분류
- 운영체제의 구조
- 이것이코딩테스트다
- stateful widget
- 프로그래머스
- webview_flutter
- 운영체제란 무엇인가
- stateless widget
- 객체 배열
- 기본형 매개변수
- PriorityQueue
- 운영체제의 예
- stateful widget 생명주기
- this()와 참조변수 this 차이점
- 명예의전당(1)
- FLUTTER
- static import문
- 오버라이딩과 오버로딩 차이점
- 참조형 반환타입
- 초기화 순서
- 운영체제의 목적
- 클래스 변수
- this()
- 오버로딩
- 조상의 생성자
- static 메서드
- 호출스택
- Today
- Total
Coram Deo
[Flutter] 상태관리(State Management)란? 본문
상태 관리(State Management)란 무엇일까?
상태 관리
상태관리란 애플리케이션에서 데이터의 상태를 관리하고, 이 상태가 변경될 때 UI를 업데이트하는 과정을 의미한다. 특히 Flutter와 같은 UI 프레임워크에서는 상태 관리가 매우 중요하다.
상태 관리의 기본 개념
- 상태(state): UI가 보여주는 데이터의 현재 상태를 말합니다. 예를 들어, 사용자 입력 값, API 호출 결과, 버튼 클릭 상태 등이 있다.
- 상태 변경: 상태가 변경되면 UI도 이에 따라 변경되어야 한다.
- 상태 저장: 상태는 메모리에 저장되며, 사용자가 앱을 사용하면서 상태가 변경된다.
상태 관리의 필요성
상태 관리는 사용자 인터페이스(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를 제공한다.
'Flutter' 카테고리의 다른 글
[Flutter] 플러터 chrome 실행시 화면에 구글맵 가져오기 (0) | 2024.07.22 |
---|---|
[Flutter] - 패키지 설치하는 2가지 방법 (0) | 2024.07.20 |
[Flutter] Stateless Widget 과 Stateful Widget 차이는 뭘까? (0) | 2024.07.19 |
[Flutter] Webview 관련 에러 - "The editor could not be opened because the file was not found" (0) | 2024.07.17 |
[Flutter] 플러터 특징 / 플러터 컴파일 방식 / 플러터 장단점 (0) | 2024.07.03 |