33package com.smarttoolfactory.tutorial3_1navigation
44
55import android.annotation.SuppressLint
6+ import androidx.activity.compose.BackHandler
67import androidx.collection.forEach
78import androidx.compose.animation.AnimatedContentTransitionScope.SlideDirection
89import androidx.compose.animation.core.tween
@@ -52,6 +53,7 @@ import androidx.navigation.NavDestination
5253import androidx.navigation.NavDestination.Companion.hasRoute
5354import androidx.navigation.NavDestination.Companion.hierarchy
5455import androidx.navigation.NavGraph
56+ import androidx.navigation.NavGraph.Companion.findStartDestination
5557import androidx.navigation.NavGraphBuilder
5658import androidx.navigation.NavHostController
5759import androidx.navigation.compose.NavHost
@@ -160,11 +162,6 @@ private fun MainContainer(
160162 )
161163 },
162164 bottomBar = {
163-
164- var lastSaveId by remember {
165- mutableIntStateOf(0 )
166- }
167-
168165 NavigationBar (
169166 modifier = Modifier .height(56 .dp),
170167 tonalElevation = 4 .dp
@@ -221,6 +218,19 @@ private fun MainContainer(
221218 }
222219}
223220
221+ @Composable
222+ private fun BackHome (
223+ navController : NavController ,
224+ ) {
225+ BackHandler {
226+ navController.navigate(BottomNavigationRoute .HomeGraph ) {
227+ launchSingleTop = true
228+ restoreState = true
229+ popUpTo(navController.graph.findStartDestination().id) { saveState = true }
230+ }
231+ }
232+ }
233+
224234/* *
225235 * @param onGoToProfileScreen lambda for navigating Profile screen from current screen with top NavHostController
226236 * @param onBottomScreenClick lambda for navigating with [nestedNavController] in BottomNavigation
@@ -265,6 +275,7 @@ private fun NavGraphBuilder.addBottomNavigationGraph(
265275 startDestination = BottomNavigationRoute .SettingsRoute1
266276 ) {
267277 composable<BottomNavigationRoute .SettingsRoute1 > { from: NavBackStackEntry ->
278+ BackHome (navController = nestedNavController)
268279 Screen (
269280 text = " Settings Screen" ,
270281 navController = nestedNavController,
@@ -275,6 +286,7 @@ private fun NavGraphBuilder.addBottomNavigationGraph(
275286 }
276287
277288 composable<BottomNavigationRoute .SettingsRoute2 > { from: NavBackStackEntry ->
289+ BackHome (navController = nestedNavController)
278290 Screen (
279291 text = " Settings Screen2" ,
280292 navController = nestedNavController,
@@ -285,6 +297,7 @@ private fun NavGraphBuilder.addBottomNavigationGraph(
285297 }
286298
287299 composable<BottomNavigationRoute .SettingsRoute3 > { from: NavBackStackEntry ->
300+ BackHome (navController = nestedNavController)
288301 Screen (
289302 text = " Settings Screen3" ,
290303 navController = nestedNavController
@@ -293,6 +306,7 @@ private fun NavGraphBuilder.addBottomNavigationGraph(
293306 }
294307
295308 composable<BottomNavigationRoute .FavoritesRoute > { from: NavBackStackEntry ->
309+ BackHome (navController = nestedNavController)
296310 Screen (
297311 text = " Favorites Screen" ,
298312 navController = nestedNavController,
@@ -306,6 +320,7 @@ private fun NavGraphBuilder.addBottomNavigationGraph(
306320 }
307321
308322 composable<BottomNavigationRoute .NotificationRoute > { from: NavBackStackEntry ->
323+ BackHome (navController = nestedNavController)
309324 Screen (
310325 text = " Notifications Screen" ,
311326 navController = nestedNavController,
0 commit comments