Preview Hilt 不支持创建 ViewModel

Mor*_*zov 5 android kotlin android-jetpack-compose dagger-hilt

我有下一个屏幕:

@ExperimentalMaterialApi
@Composable
fun AccountListScreen(
    navController: NavController,
    viewModel: AccountListViewModel = hiltViewModel()
) {
Run Code Online (Sandbox Code Playgroud)

我想预览这个屏幕。

我正在尝试按以下方式执行此操作:

@ExperimentalMaterialApi
@Preview(showBackground = true, backgroundColor = 0xFFFFFF, showSystemUi = true)
@Composable
fun AccountListScreenPreview() {
    AccountListScreen(
        navController = rememberNavController(),
        viewModel = hiltViewModel()
    )
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我在尝试构建预览时收到以下错误:

java.lang.IllegalStateException:预览版不支持 ViewModels 创建

如何解决这个问题呢?这也是我的一些课程的代码

Fra*_*esc 2

我在应用程序中所做的就是为我的根可组合项创建一个包装器,该包装器从视图模型获取状态并将其传递给第二个可组合项,其中我有实际内容。如果可组合项需要调用 viewModel 的回调,那么我将它们定义为 viewModel 实现的接口。这样,我想要预览的可组合项仅接收一个 State 类,如果需要,还接收一个回调接口,我可以轻松地将其存根掉。

像这样的东西:

@Composable
fun CityScreen(
    viewModel: CityViewModel,
    modifier: Modifier = Modifier,
) {
    val state = viewModel.state.collectAsState()
    CityScreen(
        state = state.value,
        callbacks = viewModel,
        modifier = modifier,
    )
}

@Composable
private fun CityScreen(
    state: CityState,
    callbacks: CityCallbacks,
    modifier: Modifier = Modifier,
) {
    // code here
}
Run Code Online (Sandbox Code Playgroud)