49 lines
1.3 KiB
Kotlin
49 lines
1.3 KiB
Kotlin
package com.example.cakeapp.navigation
|
|
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.navigation.NavHostController
|
|
import androidx.navigation.NavType
|
|
import androidx.navigation.compose.NavHost
|
|
import androidx.navigation.compose.composable
|
|
import androidx.navigation.navArgument
|
|
import com.example.cakeapp.screens.MenuScreen
|
|
import com.example.cakeapp.screens.OrderScreen
|
|
|
|
object Routes {
|
|
const val MENU = "menu"
|
|
const val ORDER = "order/{cakeId}"
|
|
|
|
fun orderRoute(cakeId: Int) = "order/$cakeId"
|
|
}
|
|
|
|
@Composable
|
|
fun CakeNavGraph(navController: NavHostController) {
|
|
NavHost(
|
|
navController = navController,
|
|
startDestination = Routes.MENU
|
|
) {
|
|
composable(Routes.MENU) {
|
|
MenuScreen(
|
|
onCakeSelected = { cakeId ->
|
|
navController.navigate(Routes.orderRoute(cakeId))
|
|
}
|
|
)
|
|
}
|
|
|
|
composable(
|
|
route = Routes.ORDER,
|
|
arguments = listOf(
|
|
navArgument("cakeId") { type = NavType.IntType }
|
|
)
|
|
) { backStackEntry ->
|
|
val cakeId = backStackEntry.arguments?.getInt("cakeId") ?: 1
|
|
OrderScreen(
|
|
cakeId = cakeId,
|
|
onBackToMenu = {
|
|
navController.popBackStack()
|
|
}
|
|
)
|
|
}
|
|
}
|
|
}
|