유형에 안전한 내장된 API를 사용하여
탐색 그래프에서 확인할 수 있습니다. 이 API는 앱에서 Navigation
Compose 또는 Navigation Kotlin DSL. Navigation
2.8.0
부터 사용할 수 있습니다.
이러한 API는 Safe Args가 탐색 그래프에 제공하는 API와 동일합니다. 빌드되었습니다.
경로 정의
Compose에서 유형 안전 경로를 사용하려면 먼저 직렬화 가능 여부를 정의해야 합니다. 경로를 나타내는 클래스 또는 객체입니다.
- 객체: 인수가 없는 경로에 객체를 사용합니다.
- 클래스: 인수가 있는 경로에 클래스 또는 데이터 클래스를 사용합니다.
KClass<T>
: 클래스와 같은 인수를 전달할 필요가 없는 경우 사용합니다. 매개변수가 없는 클래스 또는 모든 매개변수에 기본값이 있는 클래스 <ph type="x-smartling-placeholder">- </ph>
- 예:
Profile::class
- 예:
어떤 경우든 객체나 클래스는 직렬화될 수 있어야 합니다.
예를 들면 다음과 같습니다.
// Define a home route that doesn't take any arguments
@Serializable
object Home
// Define a profile route that takes an ID
@Serializable
data class Profile(val id: String)
그래프 빌드
다음으로 탐색 그래프를 정의해야 합니다. composable()
사용
함수를 사용하여 구성 가능한 함수를 탐색 그래프에서 대상으로 정의할 수 있습니다.
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile.id)
}
}
이 예에서는 다음 사항을 확인합니다.
composable()
는 유형 매개변수를 사용합니다. 즉,composable<Profile>
- 대상 유형을 정의하는 것이
route
문자열(composable("profile")
과 같은 형식). - route 클래스는 다음과 같이 각 탐색 인수의 유형을 정의합니다.
val id: String
, 따라서NavArgument
는 필요하지 않습니다. - 프로필 경로의 경우
toRoute()
확장 프로그램 메서드가NavBackStackEntry
및 그 객체의Profile
객체 인수입니다.
일반적으로 그래프를 디자인하는 방법에 대한 자세한 내용은 설계 탐색 그래프 페이지를 참조하세요.
유형 안전 경로로 이동
마지막으로 navigate()
를 사용하여 컴포저블로 이동할 수 있습니다.
함수에 다음과 같이 경로의 인스턴스를 전달합니다.
navController.navigate(Profile(id = 123))
이렇게 하면 사용자가 composable<Profile>
탐색 그래프에서 확인할 수 있습니다. 모든 탐색 인수(예: id
)는 다음과 같이 가져올 수 있습니다.
NavBackStackEntry.toRoute
를 사용하여 Profile
를 재구성하고
속성