flutter 실무강의
배운 내용
json
직렬화: Dart 객체
→ Map
→ String
역직렬화 String
→ Map
→ Dart 객체
<aside>
💡
Dart 객체로 변환해서 쓰는 이유
객체로 변환하지 않으면 Map
에서 계속 키값으로 찾아야돼서 타입이 헷갈리고 오타 발생할 수 있음!
</aside>
mvvm 아키텍처
- Model + View + ViewModel 의 약자
- Model : 데이터를 서버 등에서 가지고 오는 계층, 데이터 클래스 그 자체도 포함
- JSON 예제에서 User, Pet 클래스 ⇒ Model 계층. 데이터 클래스를 Model이라고도 부름
- JOSN 예제에서는 서버에서 가지고 오지 않았지만 서버에서 가지고올 때 각 모델(데이터 클래스)별로
Repository
만들어서 가지고와서 JSON을 객체로 변환해서 반환
- View : 화면을 구현하는 계층
- ViewModel : Model 계층(
Repository
)에서 데이터(Model 클래스
)를 가지고 와서 가공하는 계층
- MVVM 동작원리
- ViewModel 구독(변경되는지 바라보고 있음)
- 사용자 클릭했으니 처리
- 로직 처리
- 데이터 요청해서 데이터 받음
- 받은 데이터 가공 및 상태 업데이트
- 자신의 상태가 바뀌었다고 알림(View가 누군지는 모름)
- 뷰는 ViewModel을 구독하고 있기 때문에 상태가 바뀌었다는걸 감지. 화면 업데이트
RiverPod
- 개발자가 상태관리를 편하게 할 수 있도록 도와주는 라이브러리
- ViewModel 의 역할(상태를 관리하고 변경되었음을 알려주는 역할)을 쉽게 구현가능
- View(Widget)에서 ViewModel의 관찰을 쉽게 하게 해줌
사용법
- RiverPod 패키지 추가
flutter pub add flutter_riverpod
- main 함수에서 최상위 위젯을
ProviderScope
로 감싸기
Widget
구현