Cubit 변수 vs State 변수 활용 전략
Cubit 내부 변수 사용
- 용도: 데이터 캐싱, 여러 화면에서 공유되는 값, 필수로 UI에 직접 emit하지 않아도 되는 값
- 예시: API로 가져온 리스트, 마지막 조회 timestamp, 로그인된 사용자 정보
- 특징
- Cubit 내부에 저장
- state는 단순히 로딩/성공/실패 같은 상태 플래그만 담음
- UI는 getIt
().value 또는 Cubit 필드 직접 접근으로 값 사용 - emit을 통해 rebuild를 최소화 가능
State 내 변수 사용
- 용도: 화면에서 즉시 반영해야 하는 값, 상태와 UI를 함께 전달할 때
- 예시: “조회 성공 → 표시할 데이터”, 에러 메시지, 로딩 여부
- 특징
- Immutable state 객체에 값 포함
- emit을 통해 새 state를 만들어 UI에 전달
- BlocBuilder/BlocListener가 state 변화에 따라 자동으로 rebuild
BlocBuilder 안/밖에서 재빌드 차이
BlocBuilder 밖
- 재빌드 조건 : setState() 호출 (build 메서드가 다시 불리기 때문에 전체 위젯 갱신)
- emit()으로 state가 바뀌거나, Cubit.value가 바뀌어도 재빌드 되지 않는다.
BlocBuilder 안
- 재빌드 조건 : emit()하여 state가 바뀔 때
- 같은 state를 emit()하거나 Cubit.value만 바뀌면 재빌드 되지 않는다.
'Flutter > TIL' 카테고리의 다른 글
| 25.09.28 - git으로 flutter 버전 관리하기 (0) | 2025.09.28 |
|---|---|
| 25.09.27 - Bloc 상태관리 (Cubit) (1) | 2025.09.28 |
| 25.08.15 - AnimationController, 콜백 타입 (0) | 2025.08.15 |
| 25.08.14 - Factory, sealed, 암시적/명시적 애니메이션 (2) | 2025.08.15 |
| 25.08.13 - Dart3 추가 문법 (2) | 2025.08.13 |