Navigation의 세 가지 주요 부분은
NavController
NavGraph
NavHost
가 있다.
NavController는 Navigation을 사용할 떄 중심이 되는 구성요소이다. Stateful이며 백 스택 컴포저블 항목을 추적하고, 스택을 앞으로 이동하고, 백 스택 조작을 사용 설정하고, 대상 상태 간에 이동한다.
컴포저블에서 rememberNavController() 메서드를 이용하여 NavController를 만들 수 있다.
val navController = rememberNavController()
Navigation Graph에 정의된 화면들을 보여주는 컨테이너 역할을 한다. 대상 구성요소에는 프래그먼트 대상을 표시하는 기본 NavHost 구현인 NavHostFragement가 포함된다.
NavHost(navController = navController, startDestination = "profile") {
composable(route = "profile") { Profile(/*...*/) }
composable(route = "friendslist") { FriendsList(/*...*/) }
/*...*/
}
@Composable
fun Profile(navController: NavController) {
/*...*/
Button(onClick = { navController.navigate("friendslist") }) {
Text(text = "Navigate next")
}
/*...*/
}
NavHost(startDestination = "profile/{userId}") {
...
composable(
"profile/{userId}",
arguments = listOf(navArgument("userId") { type = NavType.StringType })
) {...}
}