如何将可为 null 的变量作为可组合项传递?

Psi*_*jic 1 android-jetpack-compose

我想TopAppBar在导航时切换其内容。目标是使用标志并更改navigationIcon. 但我不能Composable/null在这里将 作为参数传递。代码:

\n
val navIcon = if (viewModel.isBackAvailable) NavIcon { navController.navigateUp() } else null\n\nTopAppBar(navigationIcon = navIcon)// Required:(() \xe2\x86\x92 Unit)? Found:Unit?\n\n@Composable\nprivate fun NavIcon(navigate: () -> Unit) {\n    IconButton(onClick = navigate) {\n        Icon(\n            imageVector = Icons.Rounded.ArrowBack,\n            contentDescription = stringResource(R.string.navigate_back),\n            tint = MaterialTheme.colorScheme.primary\n        )\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我无法传递空值之类的东西,navigationIcon = {}因为在这种情况下它占用了空间,我需要使用null.

\n

Jan*_*ína 10

在你的代码中,navIcon是函数调用的结果NavIcon,它是单位。您需要在那里有函数引用,您可以这样做:

val navIcon: (@Composable () -> Unit)? = if (viewModel.isBackAvailable) {
    { NavIcon { navController.navigateUp() } }
} else null
Run Code Online (Sandbox Code Playgroud)