과거 프로젝트 Compose 마이그레이션 중 Navigation 적용 정리
Kotlin DSL과 Version Catalog를 사용하여 Jetpack Compose Navigation을 어떻게 적용했는지 정리한다.
0. SetUp
Dependency 추가하기
version catalog 설정
[versions]
hilt_navigation_compose = "1.2.0"
[libraries]
hilt_navigation_compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hilt_navigation_compose" }
module gradle 파일
dependencies {
implementation(libs.hilt.navigation.compose)
}
hilt-navigation-compose
라이브러리는 Hilt를 사용하려는 경우 유용하다.
Android 개발자 사이트 공식용 설정
dependencies {
val nav_version = "2.7.7"
implementation("androidx.navigation:navigation-compose:\$nav_version")
}
1. Destination을 위한 Route 정의
enum class ScreenRoute {
Intro,
ScreenA,
ScreenB,
ScreenC
}
각 스크린의 경로(route)를 정의하는 enum class를 설정한다.
2. NavController 만들기
val navController = rememberNavController()
NavController는 Compose 컴포저블 계층에서 높은 위치에 배치하여 참조할 수 있게 한다.
3. NavHost 만들기
NavHost(
navController = navController,
startDestination = ScreenRoute.Intro.name
) {
composable(route = ScreenRoute.Intro.name) { /* 스크린 */ }
composable(route = ScreenRoute.ScreenA.name) { /* 스크린 */ }
composable(route = ScreenRoute.ScreenB.name) { /* 스크린 */ }
}
startDestination
은 NavHost를 통해 처음으로 보여줄 화면이다. 이는 기존 AAC Navigation의startDestination
과 동일한 개념이다.route
는 각 composable의 경로명을 나타내며, 이는 AAC Navigation의destination
과 유사하다.arguments
는 화면 간 전달될 데이터를 정의한다.
4. Navigation 사용하기
navController.navigate(ScreenRoute.ScreenA.name)
navController.navigate(route)
를 사용하여 다른 화면으로 이동한다. 이전 화면은 자동으로 Back Stack에 저장된다.
반응형
'안드로이드 > 공부 및 정리' 카테고리의 다른 글
[Android]Android Studio 펀치홀/노치 대응 (0) | 2024.09.09 |
---|---|
[Android]accompanist-permissions을 사용한 권한 요청과 GPS를 이용한 위치 추적 (0) | 2024.09.09 |
[Android]Compose에서의 NaverMap (0) | 2024.08.30 |
[Android]Compose의 상태관리 (0) | 2024.08.30 |
[Android]기존 xml 코드를 Compose로 마이그레이션 하며 참고할 것 (0) | 2024.08.27 |