commit a196092c2db713730477c2341a84eda2a68a7a42
parent 3804516e9976989e13e449cd123114af61649abd
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Tue, 21 May 2024 23:14:38 +0200
pref(ui): navigation
Diffstat:
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/Navigation.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/Navigation.kt
@@ -35,14 +35,18 @@ class Navigation(
@Composable
fun TopBar() {
val navBackStackEntry by navController.currentBackStackEntryAsState()
+ val currentRoute = remember(navBackStackEntry) { routes.getCurrentRoute(navBackStackEntry) }
- val canGoBack = remember (navBackStackEntry) { routes.getCurrentRoute(navBackStackEntry)?.let {
+ val canGoBack = remember(navBackStackEntry) { currentRoute?.let {
!it.routeInfo.primary || it.routeInfo.childIds.contains(routes.currentDestination)
} == true }
TopAppBar(title = {
- val currentRoute = routes.getCurrentRoute(navBackStackEntry)
- currentRoute?.title?.invoke() ?: Text(text = currentRoute?.routeInfo?.translatedKey?.value ?: "Unknown Page")
+ currentRoute?.apply {
+ title?.invoke() ?: routeInfo.translatedKey?.value?.let {
+ Text(text = it)
+ }
+ }
}, navigationIcon = {
val backButtonAnimation by animateFloatAsState(if (canGoBack) 1f else 0f,
label = "backButtonAnimation"
@@ -65,17 +69,17 @@ class Navigation(
}
}
}, actions = {
- routes.getCurrentRoute(navBackStackEntry)?.topBarActions?.invoke(this)
+ currentRoute?.topBarActions?.invoke(this)
})
}
@Composable
fun BottomBar() {
val navBackStackEntry by navController.currentBackStackEntryAsState()
+ val currentRoute = remember(navBackStackEntry) { routes.getCurrentRoute(navBackStackEntry) }
val primaryRoutes = remember { routes.getRoutes().filter { it.routeInfo.primary } }
NavigationBar {
- val currentRoute = routes.getCurrentRoute(navBackStackEntry)
primaryRoutes.forEach { route ->
NavigationBarItem(
alwaysShowLabel = true,
@@ -103,7 +107,7 @@ class Navigation(
@Composable
fun FloatingActionButton() {
val navBackStackEntry by navController.currentBackStackEntryAsState()
- routes.getCurrentRoute(navBackStackEntry)?.floatingActionButton?.invoke()
+ remember(navBackStackEntry) { routes.getCurrentRoute(navBackStackEntry) }?.floatingActionButton?.invoke()
}
@Composable