如何使用@PreviewParameter 注解?
How to use the @PreviewParameter annotation?
我正在尝试预览一个将一个字符串参数作为输入的可组合项。我不确定应该如何使用 @PreviewParameter
注释。
这是我试过的
class DogProvider : PreviewParameterProvider<String> {
override val values = listOf("Bela", "Stalone").asSequence()
}
@PreviewParameter(DogProvider::class)
@Composable
fun OverviewCard(
dog: String,
modifier: Modifier = Modifier
) {
Text(dog)
}
没有渲染预览。如果我还添加 @Preview
注释,它说我应该使用 @PreviewParameter
您非常接近,但是 @PreviewParameter
应该应用于您的可组合项的参数,而不是函数本身。
您的示例应如下所示:
@Preview
@Composable
fun OverviewCardPreview(
@PreviewParameter(DogProvider::class) dog: String,
) {
Text(dog)
}
另请注意,目前每个预览的可组合项只能有一个 @PreviewParameter
注释 属性。
因为 Jetpack-Compose API 告诉我们:
Multiple @PreviewParameter are not allowed
因此,如果我们有多个参数,那么避免默认初始化参数的最佳做法是将所有参数包装在一个数据 class 中,并在 [=11] 的实现中模拟它们=]
@Preview
@Composable
private fun FeatureScreenPreviewMock(
@PreviewParameter(FeatureScreenPreviewParamProvider::class) featureScreenParams: FeatureScreenParams,
)
class FeatureScreenPreviewParamProvider : PreviewParameterProvider<FeatureScreenParams>
这样我们就不受参数个数的限制了
我正在尝试预览一个将一个字符串参数作为输入的可组合项。我不确定应该如何使用 @PreviewParameter
注释。
这是我试过的
class DogProvider : PreviewParameterProvider<String> {
override val values = listOf("Bela", "Stalone").asSequence()
}
@PreviewParameter(DogProvider::class)
@Composable
fun OverviewCard(
dog: String,
modifier: Modifier = Modifier
) {
Text(dog)
}
没有渲染预览。如果我还添加 @Preview
注释,它说我应该使用 @PreviewParameter
您非常接近,但是 @PreviewParameter
应该应用于您的可组合项的参数,而不是函数本身。
您的示例应如下所示:
@Preview
@Composable
fun OverviewCardPreview(
@PreviewParameter(DogProvider::class) dog: String,
) {
Text(dog)
}
另请注意,目前每个预览的可组合项只能有一个 @PreviewParameter
注释 属性。
因为 Jetpack-Compose API 告诉我们:
Multiple @PreviewParameter are not allowed
因此,如果我们有多个参数,那么避免默认初始化参数的最佳做法是将所有参数包装在一个数据 class 中,并在 [=11] 的实现中模拟它们=]
@Preview
@Composable
private fun FeatureScreenPreviewMock(
@PreviewParameter(FeatureScreenPreviewParamProvider::class) featureScreenParams: FeatureScreenParams,
)
class FeatureScreenPreviewParamProvider : PreviewParameterProvider<FeatureScreenParams>
这样我们就不受参数个数的限制了