如何将可空变量作为可组合项传递?
How to pass a nullable variable as a composable?
我想 TopAppBar
在导航时切换其内容。目标是使用标志并更改 navigationIcon
。但是我不能在这里将 Composable/null
作为参数传递。代码:
val navIcon = if (viewModel.isBackAvailable) NavIcon { navController.navigateUp() } else null
TopAppBar(navigationIcon = navIcon)// Required:(() → Unit)? Found:Unit?
@Composable
private fun NavIcon(navigate: () -> Unit) {
IconButton(onClick = navigate) {
Icon(
imageVector = Icons.Rounded.ArrowBack,
contentDescription = stringResource(R.string.navigate_back),
tint = MaterialTheme.colorScheme.primary
)
}
}
我不能传递空值 navigationIcon = {}
之类的东西,因为在这种情况下它需要 space,我需要使用 null
.
在您的代码中,navIcon
是 NavIcon
函数调用的结果,即单元。你需要在那里有函数引用,你可以这样做:
val navIcon: (@Composable () -> Unit)? = if (viewModel.isBackAvailable) {
{ NavIcon { navController.navigateUp() } }
} else null
我想 TopAppBar
在导航时切换其内容。目标是使用标志并更改 navigationIcon
。但是我不能在这里将 Composable/null
作为参数传递。代码:
val navIcon = if (viewModel.isBackAvailable) NavIcon { navController.navigateUp() } else null
TopAppBar(navigationIcon = navIcon)// Required:(() → Unit)? Found:Unit?
@Composable
private fun NavIcon(navigate: () -> Unit) {
IconButton(onClick = navigate) {
Icon(
imageVector = Icons.Rounded.ArrowBack,
contentDescription = stringResource(R.string.navigate_back),
tint = MaterialTheme.colorScheme.primary
)
}
}
我不能传递空值 navigationIcon = {}
之类的东西,因为在这种情况下它需要 space,我需要使用 null
.
在您的代码中,navIcon
是 NavIcon
函数调用的结果,即单元。你需要在那里有函数引用,你可以这样做:
val navIcon: (@Composable () -> Unit)? = if (viewModel.isBackAvailable) {
{ NavIcon { navController.navigateUp() } }
} else null