flutter 는 변수나 데이터의 값이 변경되면 상태 값이 변경됐다고 할 수 있다.
사용자는 상태가 변경된 UI 를 봐야하므로 데이터의 변동이 있을 경우 실시간으로 상태 값을 조정해야 한다.
새로고침 하는 거 처럼 setState() 를 사용하면 상태 값을 reloading 할 수 있다.
setState() 는 build() 함수를 호출하여 UI 를 다시 그려주는 함수이다.
상태 값이 변경될 때 setState() 를 호출한다.
하지만 만능일 거 같은 setState() 에도 한계가 있었으니...
setState() 의 한계
1. 상태 공유의 어려움
2. 규모가 커질 때 복잡도가 증가
3. 성능 문제
4. 전역 상태 관리의 부재
그래서 보통은 pub.dev 에서 사람들이 잘 만들어놓은 상태 관리 매니저(컨트롤러)를 쓰는 게 좋다!
대표적으로는
- Getx
- Provider
- Bloc/Cubit
- Riverpod
이렇게 있고 지금은 GetX 먼저 공부할 예정이다.
GetX 를 통한 Controller 구현 방법
1. GetX 라이브러리 설치
2. GetxController 상속받는 컨트롤러 생성
3. 컨트롤러 의존성 주입(main 의 build 에서 Get.put(Controller());)
4. 컨트롤러에 상태 변경될 변수/객체/함수 등 등록
5. 컨트롤러에 등록한 이벤트 호출
6. GetBuilder 를 통한 UI 동기화
대표적은 GetX 의 이벤트
페이지 이동
Get.to(() => myPage());
상태 의존성 주입
Get.put(MyController());
컨트롤러 찾기
Get.find<MyController>();
'Flutter' 카테고리의 다른 글
[Flutter] TextFormField 로 여러 개의 입력 데이터 받아오기 (0) | 2024.11.27 |
---|---|
[Flutter] 앱 내에서 테마 변경 기능(Feat. ValueNotifier) (0) | 2024.11.20 |
[Flutter] light, dark 테마 확인 방법 (0) | 2024.11.18 |
[Flutter] 위젯의 구조화 (1) | 2024.11.14 |
[Flutter] stateless, stateful, 위젯이 뭐지? (0) | 2024.10.22 |
댓글