我想知道为什么我在过快导航到“设置”屏幕时会出现这种奇怪的转变(YouTube 上的视频:https://youtube.com/shorts/UPv66zqHMbo?feature=share)。 这是所有相关代码(这是一个多模块应用程序):
我的导航图代码:
fun NavGraphBuilder.settingsGraph(navController: NavController) {
navigation(
startDestination = SettingsGraphDestination.InitialScreen.route,
route = SETTINGS_GRAPH_ROUTE
) {
composable(
route= SettingsGraphDestination.InitialScreen.route,
enterTransition = {
fadeIn(tween(durationMillis = CommonConstants.NAVIGATION_ANIMATION_DURATION_MILLIS))
},
exitTransition = {
fadeOut(tween(durationMillis = CommonConstants.NAVIGATION_ANIMATION_DURATION_MILLIS))
}
) {
SettingsScreen(
navController = navController,
onPhoneNumberSettingScreenClicked = {
navController.navigate(
SettingsGraphDestination.PhoneNumberAdjustment.route
)
},
onStepStrideAdjustmentScreenClicked = {
navController.navigate(
SettingsGraphDestination.StepStrideAdjustment.route
)
}
)
}
}
}
设置屏幕.kt:
NirvanaScaffold(
navController = navController,
screenTitle = "تنظیمات"
) {
Column(
modifier = Modifier
.fillMaxSize()
.background(nirvanaScreenBackgroundBrush)
.verticalScroll(rememberScrollState())
) {
Spacer(modifier = Modifier.weight(0.1f))
ButtonsArea(
onSubscriptionButtonClicked = { onSubscriptionScreenClicked() },
onChangePhoneNumberButtonClicked = { onPhoneNumberSettingScreenClicked() },
onChangeStepStrideButtonClicked = { onStepStrideAdjustmentScreenClicked() },
onChangeWeightButtonClicked = { onWeightAdjustmentScreenClicked() }
)
Spacer(modifier = Modifier.weight(1f))
}
}
}
RootGraph.kt:
dashboardGraph(
navController = navController,
nestedGraphs = {
settingsGraph(navController = navController)
},
navigateToSettingsGraph = {navController.navigateToSettingsGraph()}
)
}
有人知道是什么原因导致这个问题吗?我也尝试删除 EnterTransition 和 exitTransition 参数,但它不起作用!
我找到了另一个适用于我的导航 2.7.6 的解决方案,我刚刚在我的
.fillMaxSize()
中添加了 NavHost
修饰符:
...
TemplateTheme {
Surface(
color = MaterialTheme.colorScheme.background
) {
Scaffold(
snackbarHost = { SnackbarHost(snackbarHostState) },
content = { paddingValues ->
NavHost(
modifier = Modifier
.fillMaxSize()
.padding(paddingValues),
navController = navController,
...
我还在应用程序中使用单个顶级
Scaffold