Как использовать @Preview в Compose функциях которые принимают параметр?
У меня есть такой код:
...
@Composable
private fun PhoneVerificationCodeScreen(vm: MyViewModel) {
Column(...) {
...
OTPBlock(numberOfCells = NUMBER_OF_OTP_CELLS, isVerifyBtnEnabledState = vm.isVerifyBtnEnabledState)
...
}
}
...
И вот такая Preview функция:
class MyViewModelProvider : PreviewParameterProvider<MyViewModel> {
override val values: Sequence<MyViewModel> = sequenceOf(MyViewModel(
SavedStateHandle()
))
}
@Preview(
name = "Phone-portrait",
device = Devices.PHONE,
showBackground = true,
backgroundColor = 0x111,
showSystemUi = true
)
@Composable
private fun PhonePreviewVerificationCodeScreen(
@PreviewParameter(MyViewModelProvider::class) vm: MyViewModel
) = PhoneVerificationCodeScreen(vm = vm)
СПОЙЛЕР: до того, как я поставил ViewModel в параметры, все работало правильно.
Я проверил несколько ответов, и последнее, которое я попробовал это использовать PreviewParameterProvider, но это тоже не сработало.
Вопрос в том, как сделать "Preview" функции в compose, которая принимает параметр?
Ошибка:
java.lang.ClassNotFoundException: my_package.VerificationCodeViewModelProvider at java.lang.ClassLoader.loadClass at java.lang.ClassLoader.loadClass at java.lang.Class.forName0 at java.lang.Class.forName at androidx.compose.ui.tooling.ComposableInvoker.invokeComposable
Ответы (1 шт):
Автор решения: Barmaley
→ Ссылка
Я обычно делаю так:
@Preview
@Composable
private fun PhoneVerificationCodeScreen(vm: MyViewModel = null) {
Column(...) {
OTPBlock(numberOfCells = NUMBER_OF_OTP_CELLS,
isVerifyBtnEnabledState = vm?.isVerifyBtnEnabledState) ?: false //ну или true
}
}