gpt4 book ai didi

android - 预览中不支持具有非默认参数的可组合函数,除非它们使用 @PreviewParameter 注释

转载 作者:行者123 更新时间:2023-12-04 23:47:01 27 4
gpt4 key购买 nike

我有一个 Composable带有 lambda 的函数,用于获取按钮单击操作。我想预览 Composable功能。但是这种 lambda 的可组合函数在添加 @Preview 后会出错上面的注释@ComposableComposable functions with non-default parameters are not supported in Preview unless they are annotated with @PreviewParameter.可组合功能看起来像

@Composable
fun MyView(onViewButtonClick: () -> Unit) {
Button(
enabled = isEnabled, colors = ButtonDefaults.buttonColors(
backgroundColor = greenColor
),
shape = Shapes.large, onClick = (onViewButtonClick),
modifier = Modifier
.fillMaxWidth()
.padding(15.dp, 40.dp, 15.dp, 15.dp)
) {
Text(
text = stringResource(id = R.string.send_otp),
color = Color.White,
fontSize = 20.sp
)
}
}
这个的应用看起来像
MyView(onViewButtonClick = {
Log.d("ViewButtonClick","ViewButtonClick")
}).
如何使用 Lambda 查看此可组合函数的预览?

最佳答案

要么为你的可组合提供一个默认的 lambda,要么在你的 Preview 中实现一个空的 lambda

@Composable
fun MyView(onViewButtonClick: () -> Unit = {}) {
Button(
enabled = isEnabled, colors = ButtonDefaults.buttonColors(
backgroundColor = greenColor
),
shape = Shapes.large, onClick = (onViewButtonClick),
modifier = Modifier
.fillMaxWidth()
.padding(15.dp, 40.dp, 15.dp, 15.dp)
) {
Text(
text = stringResource(id = R.string.send_otp),
color = Color.White,
fontSize = 20.sp
)
}
}

@Preview
@Composable
fun MyViewPreview() {
MyView()
}
或者
@Composable
fun MyView(onViewButtonClick: () -> Unit) {
Button(
enabled = isEnabled, colors = ButtonDefaults.buttonColors(
backgroundColor = greenColor
),
shape = Shapes.large, onClick = (onViewButtonClick),
modifier = Modifier
.fillMaxWidth()
.padding(15.dp, 40.dp, 15.dp, 15.dp)
) {
Text(
text = stringResource(id = R.string.send_otp),
color = Color.White,
fontSize = 20.sp
)
}
}

@Preview
@Composable
fun MyViewPreview() {
MyView(onViewButtonClick = {})
}

关于android - 预览中不支持具有非默认参数的可组合函数,除非它们使用 @PreviewParameter 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71174154/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com