Код: Выделить всё
private fun NavGraphBuilder.addNavGraph(navController: NavController) {
composable {
RouteAScreen(navController)
}
navigation(
startDestination = RouteB
) {
composable {
RouteBScreen(navController)
}
composable(
deepLinks = listOf(
navDeepLink(basePath = "$uri/routeC")
)
) {
RouteCScreen(navController)
}
composable(
deepLinks = listOf(
navDeepLink(basePath = "$uri/routeD")
)
) {
RouteDScreen(navController)
}
}
}
Код: Выделить всё
@Preview
@Composable
fun NavCreateTest() {
val navController = rememberNavController()
// This NavGraph will be used with NavHost this navHostController will be assigned
val navGraph: NavGraph = remember {
navController.createGraph(
startDestination = RouteC
) {
addNavGraph(navController)
}
}
Column {
/*
NavHost(
modifier = Modifier.fillMaxSize(),
navController = navController,
graph = navGraph,
)
*/
NavHost(
modifier = Modifier.fillMaxSize(),
navController = navController,
startDestination = RouteC
) {
addNavGraph(navController)
}
}
}
java.lang.IllegalStateException: невозможно найти startDestination
com.packageName.RouteC из NavGraph. Убедитесь, что начальный
NavDestination был добавлен с маршрутом из KClass.
Маршруты и глубокая ссылка
Код: Выделить всё
const val uri = "test://www.example.com"
@Serializable
object RouteA
@Serializable
object RouteB
@Serializable
object RouteC
@Serializable
object RouteD
Код: Выделить всё
val intent: Intent? = (LocalContext.current as? MainActivity)?.intent
val deeplink: Uri? = intent?.data
val isDeeplink = deeplink != null
NavHost(
modifier = Modifier.fillMaxSize(),
navController = navController,
startDestination = if (isDeeplink) RouteC else RouteA
) {
addNavGraph(navController)
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... with-jetpa