底部菜单栏在进入子页面时隐藏

This commit is contained in:
2026-06-16 18:53:10 +08:00
parent fcb662ffae
commit 70a790bdb8
@@ -1,10 +1,13 @@
package cn.airnan.a2fair.ui.navigation package cn.airnan.a2fair.ui.navigation
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.EnterTransition import androidx.compose.animation.EnterTransition
import androidx.compose.animation.ExitTransition import androidx.compose.animation.ExitTransition
import androidx.compose.animation.core.tween import androidx.compose.animation.core.tween
import androidx.compose.animation.slideInHorizontally import androidx.compose.animation.slideInHorizontally
import androidx.compose.animation.slideInVertically
import androidx.compose.animation.slideOutHorizontally import androidx.compose.animation.slideOutHorizontally
import androidx.compose.animation.slideOutVertically
import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -32,40 +35,56 @@ fun AppNavigation(
val app = context.applicationContext as A2FairApplication val app = context.applicationContext as A2FairApplication
val animDuration = context.resources.getInteger(android.R.integer.config_shortAnimTime) val animDuration = context.resources.getInteger(android.R.integer.config_shortAnimTime)
val currentTopLevelDestination = appState.currentTopLevelDestination
Scaffold( Scaffold(
contentWindowInsets = WindowInsets(0, 0, 0, 0), contentWindowInsets = WindowInsets(0, 0, 0, 0),
bottomBar = { bottomBar = {
AppBottomBar( AnimatedVisibility(
destinations = appState.topLevelDestinations, visible = currentTopLevelDestination != null,
onNavigateToDestination = appState::navigateToTopLevelDestination, enter = slideInVertically(initialOffsetY = { it }, animationSpec = tween(animDuration)),
currentDestination = appState.currentTopLevelDestination exit = slideOutVertically(targetOffsetY = { it }, animationSpec = tween(animDuration))
) ) {
AppBottomBar(
destinations = appState.topLevelDestinations,
onNavigateToDestination = appState::navigateToTopLevelDestination,
currentDestination = currentTopLevelDestination
)
}
} }
) { padding -> ) { padding ->
NavHost( NavHost(
navController = appState.navController, navController = appState.navController,
startDestination = TopLevelDestination.TOKENS.route, startDestination = TopLevelDestination.TOKENS.route,
modifier = Modifier.padding(padding) modifier = Modifier // removed padding from NavHost
) { ) {
composable( composable(
route = TopLevelDestination.TOKENS.route, route = TopLevelDestination.TOKENS.route,
enterTransition = { EnterTransition.None }, enterTransition = { EnterTransition.None },
exitTransition = { ExitTransition.None } exitTransition = { ExitTransition.None }
) { ) {
TokensScreen() androidx.compose.foundation.layout.Box(
modifier = Modifier.padding(bottom = padding.calculateBottomPadding())
) {
TokensScreen()
}
} }
composable( composable(
route = TopLevelDestination.SETTINGS.route, route = TopLevelDestination.SETTINGS.route,
enterTransition = { EnterTransition.None }, enterTransition = { EnterTransition.None },
exitTransition = { ExitTransition.None } exitTransition = { ExitTransition.None }
) { ) {
SettingsScreen( androidx.compose.foundation.layout.Box(
modifier = Modifier.padding(bottom = padding.calculateBottomPadding())
) {
SettingsScreen(
onNavigateToSecurity = { appState.navController.navigate("security") }, onNavigateToSecurity = { appState.navController.navigate("security") },
onNavigateToBackup = { appState.navController.navigate("backup") }, onNavigateToBackup = { appState.navController.navigate("backup") },
onNavigateToTheme = { appState.navController.navigate("theme") }, onNavigateToTheme = { appState.navController.navigate("theme") },
onNavigateToLanguage = { appState.navController.navigate("language") }, onNavigateToLanguage = { appState.navController.navigate("language") },
onNavigateToAbout = { appState.navController.navigate("about") } onNavigateToAbout = { appState.navController.navigate("about") }
) )
}
} }
composable( composable(
route = "security", route = "security",