inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

해결된 질문

282

김보겸

작성한 질문수 8

0

안녕하세요.

클린코드 3탄을 수강하고 너무 만족스러워서 이번 추석에 2탄을 추가로 수강했습니다. ㅎㅎ

2탄에서 뷰모델이 생성될 때 직접 데이터를 넣으시더군요.(객체가 아닌 일반 변수)

평소에 뷰모델이 생성될 때 객체가 아닌 변수도 같이 바로 넣으려고 했으나 클래스(객체)가 아니기 때문에 매번 뷰를 생성하고 initstate 에서 lazy 하게 뷰모델에 데이터를 업데이트 했었습니다.

 

여기서 의문이 생겨서 질문 드립니다.

 

  1. 객체가 아닌 일반 변수에 대해서도 의존성 주입을 하는 것이 옳은 것인가요?

  2. 만약 일반 변수에 대해서도 의존성 주입을 해야한다면(해도 된다면) getit 설정에서 어떻게 접근 하면 좋을 까요?

늦은 시간에 죄송합니다. 답변 주시면 감사하겠습니다.!!

flutter mvvm provider 클린-아키텍처 dependency

답변 1

0

오준석

오오 3탄에 이어 2탄까지 감사합니다.

 

  1. 객체가 아닌 일반 변수에 대해서도 의존성 주입을 하는 것이 옳은 것인가요?

=> 의존성 주입이 항상 옳다고 할 수는 없습니다. 상황에 따라 선택하면 될 것 같습니다. 저의 경우에는 정적인 값일 경우에는 getit의 모듈을 통해서 의존성 주입을 하지만, 동적인 값의 경우에는 2탄처럼 하되 go_router 같이 라우팅하는 부분에서 직접 주입합니다.

 

  1. 만약 일반 변수에 대해서도 의존성 주입을 해야한다면(해도 된다면) getit 설정에서 어떻게 접근 하면 좋을 까요?

=> getit을 사용한다면 변수의 값을 등록하려는 시점에 getit에 등록하면 됩니다. 같은 타입의 변수가 여러개 있는 경우는 등록시 instanceName 이라는 파라미터로 이름을 정해줄 수 있을 겁니다. 그런데 이렇게 할 경우 아마도 presentation 레이어에서 직접 getit 을 활용하기 때문에 getit 의존성이 생기는 문제가 생기기 때문에 선호하지 않습니다.

presentation 레이어에서 특정 라이브러리 의존성이 생기면 UI 테스트 코드를 작성하기 어렵기 때문입니다.

이러한 내용은 앞으로 출시 예정인 '플러터 테스트 가이드' 편에서 다룰 예정입니다.

 

결론적으로 몇 가지 예시 코드입니다. 이 외에도 상황에 따라 다양한 예시가 있을 수 있겠습니다.

  1. setId() 함수에 id를 추가 전달하는 경우

image

  1. ViewModel의 생성자를 통해 전달하는 경우. getit 사용 안 함

image

2탄 다 보시고 3탄처럼 의존성 주입을 적용해 보시면 재밌을 것 같습니다.

1

김보겸

정성스런 답변 감사합니다.!!

다음 강의도 기대돼요!

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

뷰 모델 분리하기

0

334

1

네트워크 통신 에러 처리

0

331

1

데이터 추상화 문제

0

326

2

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

0

261

1

소스코드 공유

0

432

1