gpt4 book ai didi

android - Preview Hilt 不支持创建 ViewModel

转载 作者:行者123 更新时间:2023-12-05 05:55:36 35 4
gpt4 key购买 nike

我有下一个屏幕:

@ExperimentalMaterialApi
@Composable
fun AccountListScreen(
navController: NavController,
viewModel: AccountListViewModel = hiltViewModel()
) {

我想预览这个屏幕。

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

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

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

java.lang.IllegalStateException: ViewModels creation is not supportedin Preview

如何解决这个问题?这里还有code我的一些类(class)

最佳答案

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

像这样:

@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
}

关于android - Preview Hilt 不支持创建 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69441805/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com