From 70a790bdb8657efc4ecbcfb5e1d64e74431718e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=81=E5=86=9C=E9=98=BF=E6=A5=A0?= Date: Tue, 16 Jun 2026 18:53:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=95=E9=83=A8=E8=8F=9C=E5=8D=95=E6=A0=8F?= =?UTF-8?q?=E5=9C=A8=E8=BF=9B=E5=85=A5=E5=AD=90=E9=A1=B5=E9=9D=A2=E6=97=B6?= =?UTF-8?q?=E9=9A=90=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../a2fair/ui/navigation/AppNavigation.kt | 35 ++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/cn/airnan/a2fair/ui/navigation/AppNavigation.kt b/app/src/main/java/cn/airnan/a2fair/ui/navigation/AppNavigation.kt index 920de80..9310c55 100644 --- a/app/src/main/java/cn/airnan/a2fair/ui/navigation/AppNavigation.kt +++ b/app/src/main/java/cn/airnan/a2fair/ui/navigation/AppNavigation.kt @@ -1,10 +1,13 @@ package cn.airnan.a2fair.ui.navigation +import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.EnterTransition import androidx.compose.animation.ExitTransition import androidx.compose.animation.core.tween import androidx.compose.animation.slideInHorizontally +import androidx.compose.animation.slideInVertically import androidx.compose.animation.slideOutHorizontally +import androidx.compose.animation.slideOutVertically import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.padding import androidx.compose.material3.Icon @@ -32,40 +35,56 @@ fun AppNavigation( val app = context.applicationContext as A2FairApplication val animDuration = context.resources.getInteger(android.R.integer.config_shortAnimTime) + val currentTopLevelDestination = appState.currentTopLevelDestination + Scaffold( contentWindowInsets = WindowInsets(0, 0, 0, 0), bottomBar = { - AppBottomBar( - destinations = appState.topLevelDestinations, - onNavigateToDestination = appState::navigateToTopLevelDestination, - currentDestination = appState.currentTopLevelDestination - ) + AnimatedVisibility( + visible = currentTopLevelDestination != null, + enter = slideInVertically(initialOffsetY = { it }, animationSpec = tween(animDuration)), + exit = slideOutVertically(targetOffsetY = { it }, animationSpec = tween(animDuration)) + ) { + AppBottomBar( + destinations = appState.topLevelDestinations, + onNavigateToDestination = appState::navigateToTopLevelDestination, + currentDestination = currentTopLevelDestination + ) + } } ) { padding -> NavHost( navController = appState.navController, startDestination = TopLevelDestination.TOKENS.route, - modifier = Modifier.padding(padding) + modifier = Modifier // removed padding from NavHost ) { composable( route = TopLevelDestination.TOKENS.route, enterTransition = { EnterTransition.None }, exitTransition = { ExitTransition.None } ) { - TokensScreen() + androidx.compose.foundation.layout.Box( + modifier = Modifier.padding(bottom = padding.calculateBottomPadding()) + ) { + TokensScreen() + } } composable( route = TopLevelDestination.SETTINGS.route, enterTransition = { EnterTransition.None }, exitTransition = { ExitTransition.None } ) { - SettingsScreen( + androidx.compose.foundation.layout.Box( + modifier = Modifier.padding(bottom = padding.calculateBottomPadding()) + ) { + SettingsScreen( onNavigateToSecurity = { appState.navController.navigate("security") }, onNavigateToBackup = { appState.navController.navigate("backup") }, onNavigateToTheme = { appState.navController.navigate("theme") }, onNavigateToLanguage = { appState.navController.navigate("language") }, onNavigateToAbout = { appState.navController.navigate("about") } ) + } } composable( route = "security",