如何在预览可组合项上调用挂起函数?

问题描述 投票:0回答:1

我正在尝试预览一个可组合项,其中包含从挂起函数返回的数据,该函数可以通过存储在 Application 类上的存储库进行访问。

这是挂起功能:

marsPhotosRepository.getMarsPhotos()

我知道 LaunchedEffect 应该用于调用可组合项上的挂起函数,所以我这样做了:

@Preview(showBackground = true)
@Composable
fun ResultScreenPreview() {
    MarsPhotosTheme {
        val marsPhotosRepository = (LocalContext.current.getActivity()?.application as MarsPhotosApplication).container.marsPhotosRepository
        LaunchedEffect(true) {
            PhotosGridScreen(marsPhotosRepository.getMarsPhotos())
        }
    }
}

它给了我这个错误:

@Composable 调用只能在 a 的上下文中发生 @可组合函数

android kotlin android-jetpack-compose kotlin-coroutines coroutine
1个回答
0
投票

您不能在

LaunchedEffect
内调用任何可组合函数,但您可以拥有可为空的数据,将其填充到
LaunchedEffect
内并显示
PhotosGridScreen
数据不为空。

@Preview(showBackground = true)
@Composable
fun ResultScreenPreview() {
    MarsPhotosTheme {
        val marsPhotosRepository = (LocalContext.current.getActivity()?.application as MarsPhotosApplication).container.marsPhotosRepository

        var data by remember { mutableStateOf<MyData?>(null)

        LaunchedEffect(true) {
            data = marsPhotosRepository.getMarsPhotos())
        }

        data?.let{PhotosGridScreen(it)}
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.