package sh.lajo.buddy import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable private const val ROUTE_ONBOARDING_STEP1 = "onboarding/step1" private const val ROUTE_ONBOARDING_STEP2 = "onboarding/step2" private const val ROUTE_ONBOARDING_STEP3 = "onboarding/step3" private const val ROUTE_ONBOARDING_STEP4 = "onboarding/step4" private const val ROUTE_ONBOARDING_STEP5 = "onboarding/step5" private const val ROUTE_ONBOARDING_STEP6 = "onboarding/step6" private const val ROUTE_ONBOARDING_STEP7 = "onboarding/step7" private const val ROUTE_MAIN = "main" private const val ROUTE_HOME = "home" private const val ROUTE_SETTINGS = "settings" @Composable fun AppNavHost( navController: NavHostController, startDestination: String, modifier: Modifier = Modifier, ) { NavHost( navController = navController, startDestination = startDestination, modifier = modifier, ) { composable(ROUTE_ONBOARDING_STEP1) { OnboardingStep1Screen( onNext = { navController.navigate(ROUTE_ONBOARDING_STEP2) }, ) } composable(ROUTE_ONBOARDING_STEP2) { OnboardingStep2Screen( onBack = { navController.popBackStack() }, onNext = { navController.navigate(ROUTE_ONBOARDING_STEP3) }, ) } composable(ROUTE_ONBOARDING_STEP3) { OnboardingStep3Screen( onBack = { navController.popBackStack() }, onNext = { navController.navigate(ROUTE_ONBOARDING_STEP4) } ) } composable(ROUTE_ONBOARDING_STEP4) { OnboardingStep4Screen( onBack = { navController.popBackStack() }, onNext = { navController.navigate(ROUTE_ONBOARDING_STEP5) } ) } composable(ROUTE_ONBOARDING_STEP5) { OnboardingStep5Screen( onBack = { navController.popBackStack() }, onNext = { navController.navigate(ROUTE_ONBOARDING_STEP6) } ) } composable(ROUTE_ONBOARDING_STEP6) { OnboardingStep6Screen( onBack = { navController.popBackStack() }, onNext = { navController.navigate(ROUTE_ONBOARDING_STEP7) }, ) } composable(ROUTE_ONBOARDING_STEP7) { OnboardingStep7Screen( onBack = { navController.popBackStack() }, onFinish = { navController.navigate(ROUTE_HOME) { popUpTo(ROUTE_ONBOARDING_STEP1) { inclusive = true } launchSingleTop = true } } ) } composable(ROUTE_MAIN) { MainScreen() } composable(ROUTE_HOME) { HomeScreen() } composable(ROUTE_SETTINGS) { SettingsScreen() } } }