인프런 커뮤니티 질문&답변

2scent님의 프로필 이미지

작성한 질문수

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

components의 역할 질문

해결된 질문

22.01.27 01:35 작성

·

151

0

화면에서 좀 복잡한 UI일 경우, components라는 폴더로 따로 빼서 관리하시던데요.

components에 있는 위젯에서는 viewModel에 직접적으로 접근하지 않고, 상태 값이나 상태를 변경할 수 있는 함수는 screen에서 받아서 사용하도록 하시던데 components에서 viewModel에 직접 접근하면 안 되는 건지, 그 이유가 무엇인지 알 수 있을까요?

답변 1

1

오준석님의 프로필 이미지
오준석
지식공유자

2022. 01. 27. 01:40

components 에는 재사용 가능한 Widget만 넣고 있습니다.

components 에 넣어둔 Widget에서 ViewModel을 사용하게 되면 ViewModel 클래스와 의존성이 생겨버려서 재사용성이 없어지게 됩니다. 

따라서 생성자를 통해서 Widget에서 표현하고자 하는 값만 받도록 만들고  ViewModel 클래스를 사용하는 화면(Screen) 에서 적절히 값을 넣어주도록 작성하는 것입니다.

당장은 재사용할 일이 없더라도 되도록 불필요한 의존성은 만들지 않는 것이 나중을 위해서 좋다고 봅니다.

추가로 이 강의에서 위젯 테스트는 다루지 않았지만, 혹시 Widget을 테스트라도 하게 된다면 ViewModel 이 엮여 있으면 테스트가 불가능합니다.

2scent님의 프로필 이미지

작성한 질문수

질문하기