From 661b88b9617df6170b8571ecbc16aa69c285a365 Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Sat, 28 Jan 2023 13:06:50 +0100 Subject: [PATCH] Keep back stack of navigation controller clean. --- .../zobrist/tichucounter/domain/NavExtensions.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/me/zobrist/tichucounter/domain/NavExtensions.kt b/app/src/main/java/me/zobrist/tichucounter/domain/NavExtensions.kt index 3121f23..68771fb 100644 --- a/app/src/main/java/me/zobrist/tichucounter/domain/NavExtensions.kt +++ b/app/src/main/java/me/zobrist/tichucounter/domain/NavExtensions.kt @@ -5,7 +5,19 @@ import androidx.navigation.* import androidx.navigation.compose.composable fun NavController.navigate(route: Route) { - this.navigate(route.name) + this.navigate(route.name){ + // Pop up to the start destination of the graph to + // avoid building up a large stack of destinations + // on the back stack as users select items + popUpTo(Route.COUNTER.name) { + saveState = true + } + // Avoid multiple copies of the same destination when + // reselecting the same item + launchSingleTop = true + // Restore state when reselecting a previously selected item + restoreState = true + } } fun NavGraphBuilder.composable(