Hen*_*ing 19 android-jetpack-compose
我正在尝试预览一个以一个字符串参数作为输入的可组合项。我不确定@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)
}
Run Code Online (Sandbox Code Playgroud)
不渲染预览。如果我还添加@Preview注释,它表示我应该使用@PreviewParameter
Tan*_*.7x 19
你非常接近,但是@PreviewParameter应该应用你的 Composable 的参数,而不是函数本身。
您的示例应如下所示:
@Preview
@Composable
fun OverviewCardPreview(
@PreviewParameter(DogProvider::class) dog: String,
) {
Text(dog)
}
Run Code Online (Sandbox Code Playgroud)
另请注意,当前每个预览的可组合项只能有一个@PreviewParameter带注释的属性。
由于 Jetpack-Compose API 告诉我们:
不允许使用多个@PreviewParameter
因此,如果我们有多个参数,为了避免默认初始化参数,最好的办法是将所有参数包装在一个数据类中,并在实现中模拟它们PreviewParameterProvider
@Preview
@Composable
private fun FeatureScreenPreviewMock(
@PreviewParameter(FeatureScreenPreviewParamProvider::class) featureScreenParams: FeatureScreenParams,
)
class FeatureScreenPreviewParamProvider : PreviewParameterProvider<FeatureScreenParams>
Run Code Online (Sandbox Code Playgroud)
这样我们就不受参数数量的限制
使用WelcomeScreenPreviewMock进行示例
| 归档时间: |
|
| 查看次数: |
16741 次 |
| 最近记录: |