플러터 공부 내역

원장·2024년 8월 7일

플러터 기초

목록 보기
8/36

riverpod

flutter riverpod을 만든 사람이 freezed도 만들고 provider도 만들고.. 멋지군..

riverpod에선 상태관리할 때 전역변수화.

provider 상태는 ConsumerWidget에서만 가져올 수 잇음.

statefulWidget이라면 ConsumerStatefulWidget으로.

MaterialApp을 ProviderScope으로 묶어서 scope 정해줘야함.

2번째줄에서 riverpod에서 상태관리할 때 전역변수화된다고 했는데, scope 안에 어떠한 scope를 만들면 그 안에서 쓰는 변수는 그 scope 내에서만 쓸 수 있는 변수가 된다.

Riverpod generator 추천하심.

flutter hooks를 이용하면 react hook처럼 쓸 수 있음.

아키텍처 & 상태관리의 장단점

구조파악 쉬워짐, 작성하는 코드의 양이 줄어듦, 가독성이 좋아짐, 안정성 증가, 확장성 용이

맞고 틀리고의 정답이 없다. 어떤 것이 좋은지 알아보고, 살펴보는데 너무 많은 시간을 쏟는 것은 낭비, 직접 손으로 경험해보기!

미리 만들어진 아키텍쳐를 따라가기보다 코드를 만들어가며 알맞는 설계를 만들기.

정보의 저장은 어디에?

  • DB
  • Preference

저장할 위치는 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

데이터 저장 형식 종류

  1. html
  2. xml
  3. plist
  4. json
  5. yaml
  6. md

대충 로컬 DB 쓸 일 생기면 isar 쓰기 ㅇㅇ..

http 통신

원격에 있는 서버 DB파일에 저장 하려면 Http 통신으로 데이터 전달.

Request

User-Agent 는 서버에 신호를 보내고 있는 단말(클라이언트) 정보.

Authorization: 로그인 인증 토큰

Cookie: Key-Value형태의 긴 여러 데이터
Content-Type: 보낸 Body Data의 데이터 유형
text/html; charset=utf-8 text/xml image/png application/json...

Body: Content-Type에 설정한 데이터

Response

Header:
server: 서버종류,

Content-Disposition: 내용을 어떻게 보여줄 지 안내. 페이지를 보여주는건지, 다운로드를 하는건지.

Cookie

REST API

Representaional State Transfer Application Programming Interface

flutter에서 사용하는 통신 패키지 종류

  1. Http 일반적으로는 http1 쓰이는군..
  2. gRPC http2 기반으로 만들어짐. 커넥션을 한 번 맺으면 필요 없을 때까지 연결되어있음.. webRTC 아닌가?

webRTC와 HTTP/2의 차이

  • 목적: HTTP/2는 웹 페이지 로딩 성능 향상에 중점을 두고, WebRTC는 실시간 미디어 통신에 중점을 둠.
  • 통신 방식: HTTP/2는 클라이언트-서버 모델을 사용하며, WebRTC는 P2P 모델을 사용함.
  • 주요 기능: HTTP/2는 다중화, 헤더 압축, 서버 푸시 등으로 웹 성능을 개선하며, WebRTC는 낮은 지연 시간의 실시간 오디오/비디오 통신을 지원.
  • 사용 사례: HTTP/2는 웹 페이지 로딩, API 요청 등에 사용되고, WebRTC는 화상 회의, 음성 통화, P2P 파일 전송 등에 사용됩니다.
  1. GraphQL => 요청할 때 특정한 데이터만 달라고 할 수 있어서 효율적으로 response를 받을 수 있음.
  2. web socket
  3. Firebase => firebase DB 저장, storage 파일 저장, Cloud Functions 서버 함수 구현 => 장점이 MAU 천명, 5천명까지 무료로 커버된다고함; 몰랐네.. 서버 구동시킬 필요가 없음. 구글에서 알아서 해줌.

dio

dio 로 받고 json_serializer 설치해서 데이터 변환하기.

통신 에러까지 잡는게 아주 실무적이다...

나중에 에러처리 할 때 ch 07 => 03 보고 에러 처리 만들어놓기

profile
나 원장이 아니다

0개의 댓글