我正在尝试预览一个可组合项,其中包含从挂起函数返回的数据,该函数可以通过存储在 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 的上下文中发生 @可组合函数
您不能在
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)}
}
}