如何使用@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> 

这样我们就不受参数个数的限制了


样本 WelcomeScreenPreviewMock