Как использовать @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
    }
}
→ Ссылка