inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Flutter 중급 1편 - 클린 아키텍처

33 노트 삭제, 취소 기능

widget build private 함수 멀티 호출

311

이동현

작성한 질문수 10

0

안녕하세요. 강의코드중 궁금한게 몇가지 있어서 질문드립니다. 

1. add_edit_note_screen.dart 파일에서

param 값인 selected와 color를 콘솔에 찍어보면

한번 클릭시 여러번의 로그가 쌓이는데요.. 

색상 변경시 _buildBadkgroundColor() 함수가 여러번 호출이 되어서 그런건지 color의 갯수만큼 로그가 찍히는데요..정상인건가요? 

 

 

2. 다른 강의에서도 설명해주신 내용으로 자체 개발을 진행해보고 있는데요.. di/ provider_setup.dart 파일을 구성할때

가령 msa 구조로 product, order 이렇게 모듈로 나누어져 있고 product 모듈에서 쓰는 여러 api 및 use_case, order에서 쓰는 여러 api 및 use_case가 있을텐데요..

이렇게 앱이 규모가 커졌을때 provider_setup 파일에 각 모듈에 해당하는 productAPI 및 use_case를 다 정의해줘야 하는지 아니면 다른 방법이 있는지 궁금합니다.

 

ProxyProvider<http.Client, PixabayApi>(
update: (context, client, _) => PixabayApi(client),
),
ProxyProvider<PixabayApi, PhotoApiRepository>(
update: (context, api, _) => PhotoApiRepositoryImpl(api),
),
ProxyProvider<PhotoApiRepository, GetPhotosUseCase>(
update: (context, repository, _) => GetPhotosUseCase(repository),
),

 

이전에 이렇게 pixabayapi 및 use_case가 1개라 위와 같이 선언이 되었는데요..

pixabayapi 외에도 또 다른 productapi, orderapi 가 존재하는 경우, 그리고 각 product 모듈내에 GetPhotoUseCase 처럼 하나가 아닌 여러 useCase가 존재할때 같은 방식으로 각 useCase별로 여러번 위와 같이 선언을 해야 하나요? 

 

ProxyProvider<http.Client, PixabayApi>(
update: (context, client, _) => PixabayApi(client),
),
ProxyProvider<PhotoApiRepository, GetPhotosUseCase>(
update: (context, repository, _) => GetPhotosUseCase(repository),
),

//product API
ProxyProvider<http.Client, ProductApi>(
update: (context, client, _) => ProductApi(client),
),

 

//여러개 use case일때??????

ProxyProvider<ProductApiRepository, GetProductUseCase>(
update: (context, repository, _) => GetProductUseCase(repository),
),
 
ProxyProvider<ProductApiRepository, GetProductDetailUseCase>(
update: (context, repository, _) => GetProductDetailUseCase(repository),
),

ProxyProvider<ProductApiRepository, UpdateProductDetailUseCase>(
update: (context, repository, _) => UpdateProductDetailUseCase(repository),
),


.... usecase별로 다 생성이 필요한거죠???

 

 

Flutter ios android

답변 1

0

오준석

1. noteColors를 map 함수로 변환하고 있으니 색상 갯수만큼 실행되는 것이 맞습니다. 로그를 잘 보시면 색상도 모두 다르고 상태도 한 개만 true 이지요.

2. 네. 잘 하고 계십니다.

추가로 부연 설명을 추가하자면

Provider로 설정을 하는 이유가 다른 곳에서도 쉽게 해당 객체 인스턴스를 얻고자 하기 위함입니다.

모든 객체를 싱글턴으로 취급하겠다면 위와 같이 모든 객체를 Provider로 설정해도 되고, 상황에 따라서는 다른 방식도 응용할 수 있습니다.

어떤 ViewModel은 싱글턴이면 안 되는 상황도 있습니다. 예를 들어 리스트에서 클릭시 상세 페이지로 들어가는 부분은 상세 페이지로 들어갈 때 Provider 가 작성되어서 매번 ViewModel을 다시 생성해야 합니다. 이 때는 navigator.push 하는 순간에 Provider 코드가 들어가지요.

그래서 의존성 주입 부분은 여러가지 옵션이 있을 수 있겠습니다.

따라서 프로젝트가 복잡해 지게 되면get_It 패키지 도입도 고려해 볼 만 합니다. 싱글턴과 매번 생성되는 인스턴스 설정을 관리하기가 좀 더 쉬워집니다.

https://www.youtube.com/watch?v=f9XQD5mf6FY

0

이동현

항상 친절하고 자세한 답변 감사드립니다.

MVVM, 클린 아키텍처 관련 질문 있습니다.

0

111

2

가끔씩 ui가 깨지는? 현상이 있어서 질문드립니다.

0

104

1

freezed 3.0 대응된 코드 깃헙에도 업데이트 해주실 수 있으신가요?

0

196

3

sealed class 사용시 기능은 동작하지만 Radio위젯에 선택 표시가 안되는 부분 질문

0

133

2

sealed class 사용시 The getter 'orderType' isn't defined for the type 'NoteOrder<dynamic>' 오류

0

102

2

유즈케이스 관련하여 질문 드립니다.

0

99

1

mockito사용시 오류 해결법

1

127

2

sealed class 사용 문의2

0

88

2

sealed class 사용 문의

0

123

2

freezed3.0에서 build시 when생성되지 않습니다.

0

275

2

Try implementing the missing methods, or make the class abstract. 문제해결 공유

0

246

2

This is likely caused by a misconfigured builder definition. 오류 해결 방법

1

332

3

강의 화면이 안보여요

0

142

3

Flutter에서 추천하는 Navigator, Router

0

335

2

The following ProgressEvent object was thrown resolving an image codec: [object ProgressEvent]

0

331

3

event와 ui_event

0

217

1

코드 색깔 관련 질문

0

215

1

Photo.fleezed.dart,photo.g.dart삭제시 에러

0

216

2

sealed class 적용 시...

0

337

1

클린 아키텍처 질문

0

320

1

sealed class 데이터 접근

0

334

1

서버에서 데이터를 가져와서 사용하는 경우...

0

240

1

뷰/뷰모델 작성 질문

0

278

1

freezed JsonKey 사용 예시 공유

1

798

1