Jetpack Compose에서 지원하며 Navigation 구성요소의 인프라와 기능을 활용하여 컴포저블 간에 이동하기 위해 사용합니다. (화면전환)
Navigation 구성요소에는 다음과 같은 세 가지 주요 부분이 있습니다.
앱에서 다른 화면으로 이동하기 위해 사용하는 방식은 문자열로 route를 지정하는 것입니다. 우리가 URL을 쳐서 다른 웹페이지로 이동하는 것과 비슷합니다. 앱의 화면 수는 한정되어 있으므로 경로도 한정됩니다. 따라서 enum 클래스를 사용하여 앱의 경로를 정의할 수 있습니다.
implementation "androidx.navigation:navigation-compose:2.5.3"
val navController = rememberNavController()
NavHost 선언
NavHost(navController = navController,
startDestination = CupcakeScreen.Start.name,
modifier = modifier.padding(innerPadding)){
}
NavHost의 콘텐츠 함수 내에서 composable() 함수를 호출합니다. composable() 함수에는 필수 매개변수가 두 개 있습니다.
NavHost(
navController = navController,
startDestination = CupcakeScreen.Start.name,
modifier = modifier.padding(innerPadding)
) {
composable(route = CupcakeScreen.Start.name) {
}
}
다른 경로로 이동하려면 NavHostController 인스턴스에서 navigate() 메서드를 호출하면 됩니다.
navController.navigate(CupcakeScreen.Start.name)
❗️ 하단의 startDestination부터 최상단 화면까지의 화면 기록을 백 스택이라고 합니다.
popBackStack() 메서드에는 두 가지 필수 매개변수가 있습니다.
navController.popBackStack(CupcakeScreen.Start.name, inclusive = false)