【发布时间】:2022-05-01 03:38:07
【问题描述】:
我按照官方guide 创建了viewModel 实例,它运行良好。但是,当@composable 中有任何viewModel 时,Android Studio 将无法呈现预览并且错误代码为ViewModels creation is not supported in Preview。有人有解决办法吗?
附:使用撰写版本1.0.0-alpha06
【问题讨论】:
-
目前预览可以通过 func 参数传递 viewModel,但是如果我有很多 viewmodel 就很奇怪
-
@Preview主要用于可组合层次结构的末端(例如,列表中的行),这些可组合对象既不接收也不实例化视图模型。相反,它们应该接收普通参数、State对象和用于回调的 lambda——您可以轻松地在可组合声明中为其提供默认值。 -
我可以看到一些在测试时使用
mock。想知道使用预览时是否有类似的事情。如果任何子元素可使用任何视图模型进行组合,则无法预览父屏幕会很不方便 -
@CommonsWare 不符合此文档。可组合项可以采用视图模型。我认为Android团队只需要添加对它的支持:developer.android.com/jetpack/compose/state
-
我遇到了同样的问题。我的解决方法是让我的 viewModel 可以为空并为预览提供默认值。