From d6a983d2c7394f0b1e4a464facc823a5935a37c4 Mon Sep 17 00:00:00 2001 From: Sushant Hande Date: Mon, 30 Dec 2024 12:16:40 +0530 Subject: [PATCH] Updated screen navigation with jetpack navigation library implementation --- .../com/example/travelapp_kmp/MainView.kt | 54 ++++++------------- 1 file changed, 16 insertions(+), 38 deletions(-) diff --git a/shared/src/commonMain/kotlin/com/example/travelapp_kmp/MainView.kt b/shared/src/commonMain/kotlin/com/example/travelapp_kmp/MainView.kt index a2eb5a5..63c3446 100644 --- a/shared/src/commonMain/kotlin/com/example/travelapp_kmp/MainView.kt +++ b/shared/src/commonMain/kotlin/com/example/travelapp_kmp/MainView.kt @@ -1,9 +1,13 @@ package com.example.travelapp_kmp +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable -import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController import com.example.travelapp_kmp.details.DetailScreen import com.example.travelapp_kmp.details.DetailScreenWeb import com.example.travelapp_kmp.listing.ListScreenViewModel @@ -14,56 +18,30 @@ import com.example.travelapp_kmp.listing.TouristPlace @Composable internal fun CommonView(isLargeScreen: Boolean = false) { val viewMode = remember { ListScreenViewModel() } -// val navController = rememberNavController() + val navController = rememberNavController() var selectedTouristPlace: TouristPlace? = null - val currentScreen = remember { mutableStateOf(AppScreen.List) } MaterialTheme { - when (currentScreen.value) { - AppScreen.List -> { + NavHost( + navController = navController, + startDestination = AppScreen.List.name, + modifier = Modifier.fillMaxSize() + ) { + composable(AppScreen.List.name) { MainScreen(navigateToDetails = { selectedTouristPlace = it - currentScreen.value = AppScreen.Details -// navController.navigate(AppScreen.Details.name) + navController.navigate(AppScreen.Details.name) }, viewMode = viewMode) } - - AppScreen.Details -> { + composable(AppScreen.Details.name) { if (isLargeScreen) DetailScreenWeb(touristPlace = selectedTouristPlace!!, - navigateBack = { - currentScreen.value = AppScreen.List -// navController.popBackStack() - }) + navigateBack = { navController.popBackStack() }) else DetailScreen(touristPlace = selectedTouristPlace!!, - navigateBack = { - currentScreen.value = AppScreen.List -// navController.popBackStack() - }) + navigateBack = { navController.popBackStack() }) } } - -// NavHost( -// navController = navController, -// startDestination = AppScreen.List.name, -// modifier = Modifier.fillMaxSize() -// ) { -// composable(AppScreen.List.name) { -// MainScreen(navigateToDetails = { -// selectedTouristPlace = it -// navController.navigate(AppScreen.Details.name) -// }, viewMode = viewMode) -// } -// composable(AppScreen.Details.name) { -// if (isLargeScreen) -// DetailScreenWeb(touristPlace = selectedTouristPlace!!, -// navigateBack = { navController.popBackStack() }) -// else -// DetailScreen(touristPlace = selectedTouristPlace!!, -// navigateBack = { navController.popBackStack() }) -// } -// } } }