노준혁·2023년 5월 24일
  • features 디렉토리 : 화면에 보여지고 유저가 사용하는 중심 기능들을 모아놓는 디렉토리
  • features -> common : 다양한 features 기능들에서 공통적으로 사용되는 부분들을 모아놓는 디렉토리 (di, entity(화면 보여지는 것들을 위한 data class, entity class에 데이터를 담고 다른 단으로 데이터를 보내는 형식에 쓰임), mapper(class를 한 계층에서 다른 계층으로 보낼 때 쓰임. 즉, network에서 쓰는 data class를 response라고 한다면, response를 entity로 바꿔주는게 mapper의 역할), network(network layer), repository, viewModel(공통적으로 쓰이는 viewModel은 보통 ThemeViewModel이 속하게 되는데, 테마는 모든 화면에 공통적으로 써야하기 때문. 등등)
  • libraries 디렉토리 : build.gradle에서 수많은 라이브러리들을 가져온 것처럼, 프로젝트 내부에서 쓰이는 작은 라이브러리들을 모아놓는 디렉토리
    features는 유저가 사용하는 기능들, libraries는 feature에서 사용하는 기능들이라고 생각하면 된다.

  • ui 디렉토리 :
    ui -> components : 화면에 표시하기 위해 미리 Composable로 만들어진 도구들의 모음
    ui -> models: jetpack compose를 위한 entity
    ui -> navigation : compose 네비게이션이 아니라 fragment 네비게이션을 사용하기 위함

  • CompositionLocalProvider(LocalColors provides colors) {
        MaterialTheme(
            colors = colors.material,
            typography = myTheme.typography,
            shapes = myTheme.shapes,
            content = content
        )
    }

    CompositionLocalProvider는 Jetpack Compose에서 제공되는 컴포넌트로, 컴포지션 로컬 값을 제공하는 역할을 한다.

CompositionLocalProvider는 자식 컴포넌트에 로컬 값을 제공하고 싶을 때 사용되며, 일반적으로, 특정 로컬 값을 정의하고 해당 값을 컴포지션 로컬로 제공하는 고유한 범위를 생성하는 역할을 한다.

이 컴포넌트는 주어진 로컬 값을 제공하는 로컬 범위를 생성하며, 하위 컴포넌트는 해당 로컬 값을 읽어 사용할 수 있다. 즉, 보통 CompositionLocalProvider는 상위 컴포넌트에서 하위 컴포넌트로 로컬 값을 전달할 때 사용된다는 것.

예를 들어, CompositionLocalProvider를 사용하여 앱의 테마, 색상, 언어 설정 등과 같은 중요한 정보를 전역적으로 제공할 수 있으며, 이로 인해 앱 내의 모든 하위 컴포넌트에서 이 값들을 읽고 사용할 수 있게 된다.

CompositionLocalProvider는 컴포지션 로컬을 사용하는 컴포넌트의 계층 구조를 감싸는 래퍼로 사용됩니다. 이를 통해 하위 컴포넌트에서 필요한 로컬 값을 쉽게 제공하고 공유할 수 있게 되는 것이다.

profile
https://github.com/nohjunh

0개의 댓글