inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Flutter 중급 3편 - 의존성 주입 가이드

23-Injectable 로 DI 구성

데이터 추상화 문제

해결된 질문

326

김보겸

작성한 질문수 8

0

안녕하세요.

코드를 작성하다가 궁금증이 생겨 질문을 올립니다.

사용자 입장에서 인터넷이 되나 안되나 비슷한 경험을 제공하려고 합니다. 아래 데이터 흐름을 예로 들겠습니다.

  1. 뷰모델

  2. 학교 디테일 정보 fetch use case

  3. 학교 repository(interface fetch)

  4. remote data source - 학교repository확장

  5. local data source - 학교 repository 확장

 

이런 상황에서 인터넷이 되면 4번에서 데이터를 가져오고 안되면 5번에서 가져오려고 합니다.

 

이럴때 인터넷이 되는지 안되는 지 판단하는 클래스는 use case 내 execute 안에서 하는 것이 옳은지 아니면 use case 와 data source 사이에 로컬 및 리모트 데이터 소스를 주입 받는 새로운 클래스를 새로만드는 것이 옳은지 아니면 다른 접근이 있는 지 궁금합니다.

 

또한 인터넷이 안되는 것 뿐만 아니라 인터넷이 되는 상황에서도 로컬의 값과 서버의 값이 같으면 로컬 데이터를 사용하도록 하고 싶은데 어디 클래스에서 어떤 방식으로(더티비트?) 구현하는 것이 좋을 지 궁금합니다.

 

감사합니다.

flutter mvvm provider 클린-아키텍처 dependency

답변 2

1

오준석

이럴때 인터넷이 되는지 안되는 지 판단하는 클래스는 use case 내 execute 안에서 하는 것이 옳은지 아니면 use case 와 data source 사이에 로컬 및 리모트 데이터 소스를 주입 받는 새로운 클래스를 새로만드는 것이 옳은지 아니면 다른 접근이 있는 지 궁금합니다.

=> use case 내에서 하면 될 것 같습니다.

예전에 실시간 인터넷 연결상태 모니터링 하는 예제를 유튜브에 올렸는데 참고하시기 바랍니다.
https://youtu.be/-MK4eCjAOMg

여기서 실시간이 아닌 요청시마다 확인으로 바꾸면 될 것 같습니다.

하시려면 로직이 Flutter 중급 2편 - 미국 주식 앱을 보셨다면 한번 가져온 데이터를 DB에 넣어놓고 캐시로 사용하는 로직과 비슷하네요. DB에 있으면 DB 내용을 가져오고, 없으면 인터넷에서 가져오는.

 

또한 인터넷이 안되는 것 뿐만 아니라 인터넷이 되는 상황에서도 로컬의 값과 서버의 값이 같으면 로컬 데이터를 사용하도록 하고 싶은데 어디 클래스에서 어떤 방식으로(더티비트?) 구현하는 것이 좋을 지 궁금합니다.

=> 마찬가지로 use case 내에서 구현하면 됩니다.

인터넷이 되는 상황에서도 결국은 서버의 내용을 모두 읽어와서 비교 후 같으면 로컬 값을 사용하므로,

정리하면 인터넷이 되면 로컬 DB에 저장 후 사용,

인터넷이 안 되면 로컬 DB를 사용 이지 않을까 싶습니다.

0

김보겸

빠르고 알찬 답변 감사드립니다!

Node 관련 질문입니다

0

20

3

구글 소셜 로그인 후 로그인 시 구글에러

0

25

2

실습중(개인 비용 관리 앱) 문의드려요

0

41

2

6강에 비디오가 이상해요

0

20

1

Isar 마지막 업데이트는 2년전입니다.

0

28

0

수강연장부탁드려도될까요..

0

40

2

Chat GPT API 설정하기 프롬프트

0

45

2

FlutterSecureStorage 질문

0

27

0

구글 플레이 등록 시, Privact Policy URL 등록 팁

0

38

1

질문있습니다!

0

16

0

2-8강 Websocket server running on port가 안 뜹니다.

0

39

2

video_call 플러그인 설치후 에러 발생

0

42

1

마스크 json url이 안보여서 공유합니다

0

66

1

DI 에 대해 문의 좀 드립니다.

0

114

2

Bad state 에러

0

187

1

여러 화면 di강의는 언제 나올 예정인가요?

0

187

1

Riverpod 프로바이더에 의존성 주입

0

955

1

remote data source impl

0

271

1

go router 의존성

0

281

1

객체가 아닌 일반 변수의 get it

0

282

1

뷰 모델 분리하기

0

334

1

네트워크 통신 에러 처리

0

331

1

로그인(auth)관련 데이터 흐름

0

261

1

소스코드 공유

0

432

1