티스토리 뷰
상태관리 패키지를 사용하는 이유
Flutter의 경우 상태 관리를 위해서 기본으로 제공해 주는 StatefulWidget이 존재한다.
하지만 StatefulWidget의 경우 상태관리를 위해서는 setState만을 활용해야 하며
상태변경 시 서로 다른 페이지의 화면을 갱신해 주기에는 매우 까다롭다.
안 되는 건 아니지만 코드가 복잡해지고 길어지는 현상이 발생하기 때문에 아주 작은 프로젝트가 아니라면
해당 방식을 사용하는 건 추천하지는 않는다.
해당 문제를 해결하기 위해 상태관리 패지키를 사용하게 된다.
대부분의 상태관리 패키지의 경우 중앙 집중식으로 데이터를 한 곳에 모아서 관리하게 되고 아래 이미지와 같이 최상단에 모아서 관리하고 사용하게 된다.

상태 관리 패키지 종류
pub.dev에서 상태관리 패키지중 가장 많은 Like를 받은 패키지들은 아래와 같다
1. GetX
2. Provider
3. BloC
4. Riverpod
이중 Provider는 flutter 공식 추전 패키지이고 사용법도 쉽다.
Provider
https://pub.dev/packages/provider
provider | Flutter package
A wrapper around InheritedWidget to make them easier to use and more reusable.
pub.dev
사용법
- 설치
1) 안드로이드 스튜디오 기준 : 터미널 클릭 > fluuter pub add provider 실행

2) pubspec.yaml 파일에 dependencies에 provider 추가 확인

3) 상태관리를 위한 dart파일 생성(이름_service.dart로 생성)

4) 상태관리를 위하여 코드 작성
- memoList가 변경되는 경우 해당 값을 보여주는 화면들을 모두 갱신하는 기능을 구현하기 위하여
ChangeNotifier 클래스를 상속(extend) 받음
- ChangeNotifier를 상속받은 경우 notifyListeners()를 호출하여 Consumer 위젯 들을 갱신

5) runApp에 provider 설정
- ChangeNotifierProvider 위젯을 통해 변화를 감지(하나만 감지 가능)
-MultProvider로 ChangeNotifierProvider 위젯을 감싸 여러 개의 변화를 감지
- child 지정한 위젯들에 위에서 설정한 provider 접근 가능

6) provider 사용
-
Comsumer<클래스> : 클래스 정보의 갱신 시 화면을 새로 고침 해야 하는 경우 사용
- context.read<클래스>() : 화면의 새로고침 없어 클래스의 정보를 사용할 경우


'공부하는 키보드르륵 > Flutter' 카테고리의 다른 글
[flutter doctor 에러 해결방법] visual studio - develop windows apps (0) | 2024.04.27 |
---|---|
[shared_preferences] 데이터 보관 (1) | 2024.03.24 |
[날씨 App 만들기-3] data 전달 / json data 전달 (0) | 2022.10.31 |
[날씨 App 만들기-2] http package / Json Parse (0) | 2022.10.26 |
[날씨 App 만들기-1] geolocator 사용하여 내 위치 찾기 (1) | 2022.10.24 |
- Total
- Today
- Yesterday
- springboot
- Spring cloud gateway
- 코딩셰프
- 플러터
- 정보처리기사
- apigateway
- 안드로이드
- 실내데이트
- EUREKA
- MSA
- spring cloud gateway mvc
- 반응형레이아웃
- Flutter
- 로또
- 소근육발달
- 개발자
- DART
- 내돈내산
- 난임부부
- json
- 코드팩토리
- java
- spring msa
- 행운
- 육아
- 갤럭시s25울트라
- 로또구매팁
- Spring
- 인생역전
- android
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |