奇怪的 Jetpack Compose 导航过渡行为

问题描述 投票:0回答:1

我想知道为什么我在过快导航到“设置”屏幕时会出现这种奇怪的转变(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 参数,但它不起作用!

android navigation android-jetpack-compose android-jetpack-navigation
1个回答
0
投票

我找到了另一个适用于我的导航 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

© www.soinside.com 2019 - 2024. All rights reserved.