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