flutter riverpod을 만든 사람이 freezed도 만들고 provider도 만들고.. 멋지군..
riverpod에선 상태관리할 때 전역변수화.
provider 상태는 ConsumerWidget에서만 가져올 수 잇음.
statefulWidget이라면 ConsumerStatefulWidget으로.
MaterialApp을 ProviderScope으로 묶어서 scope 정해줘야함.
2번째줄에서 riverpod에서 상태관리할 때 전역변수화된다고 했는데, scope 안에 어떠한 scope를 만들면 그 안에서 쓰는 변수는 그 scope 내에서만 쓸 수 있는 변수가 된다.
Riverpod generator 추천하심.
flutter hooks를 이용하면 react hook처럼 쓸 수 있음.
구조파악 쉬워짐, 작성하는 코드의 양이 줄어듦, 가독성이 좋아짐, 안정성 증가, 확장성 용이
맞고 틀리고의 정답이 없다. 어떤 것이 좋은지 알아보고, 살펴보는데 너무 많은 시간을 쏟는 것은 낭비, 직접 손으로 경험해보기!
미리 만들어진 아키텍쳐를 따라가기보다 코드를 만들어가며 알맞는 설계를 만들기.
저장할 위치는 Local - 앱에 설치된 단말기 Or Network - 별도의 서버
일반적인 동기화는 local, network 둘 다 상호 저장, 어떤 데이터가 우선권을 가질지 통제
특별한 동기화는 ex) firestore => app에서는 간단한 동작만 수행하고 DB 자체 프레임워크에서 별도로 동기화 하도록 구성
DB 저장에는
1. sqlite3
2. drift
3. realm
4. hive
5. isar
Preference 저장에는
1. shared_preferences => ios, android 둘 다 알아서 해주니 이거쓰는게 <
2. flutter_secure_storage
원격에 있는 서버 DB파일에 저장 하려면 Http 통신으로 데이터 전달.
User-Agent 는 서버에 신호를 보내고 있는 단말(클라이언트) 정보.
Authorization: 로그인 인증 토큰
Cookie: Key-Value형태의 긴 여러 데이터
Content-Type: 보낸 Body Data의 데이터 유형
text/html; charset=utf-8 text/xml image/png application/json...
Body: Content-Type에 설정한 데이터
Header:
server: 서버종류,
Content-Disposition: 내용을 어떻게 보여줄 지 안내. 페이지를 보여주는건지, 다운로드를 하는건지.
Cookie
Representaional State Transfer Application Programming Interface
dio 로 받고 json_serializer 설치해서 데이터 변환하기.
통신 에러까지 잡는게 아주 실무적이다...
나중에 에러처리 할 때 ch 07 => 03 보고 에러 처리 만들어놓기