我在Jetpack compose上过这样的课:
class MainActivity : ComponentActivity(){
private var viewModel: MAViewModel = MAViewModel()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
AplicacionCiudadesTheme {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = "splash") {
composable("splash") {
SplashScreen(navController)
}
composable("main") {
val fichasState = viewModel.fichas.collectAsState()
val listaFichas = remember {
fichasState
}
* MainScreen(listaFichas)*
}
}
}
}
}
}
类MAViewModel:
class MAViewModel : ViewModel() {
private val _fichas = MutableStateFlow<List<FichaX>>(emptyList())
val fichas: StateFlow<List<FichaX>> get() = _fichas
init {
listarFichas()
Log.i("Info", "$_fichas")
}
private fun listarFichas() {
viewModelScope.launch {
val fichasService = fichasRepo.listFichas(
Resources.idCategoriaPadre,
Resources.idIdioma,
Resources.idProyecto
)
_fichas.value = fichasService.fichas
}
}
}
当我调用MainScreen时,listaFichas显示此错误:
type mismatch
require: List<FichaX>
found: State<List<FichaX>>
MainScreen是一个接收FichaX类型的objetc列表的类,请记住不能正常工作
1条答案
按热度按时间u7up0aaq1#
您必须使用
listaFichas.value
。如果你想在没有
.value
的情况下使用listaFichas
,你必须像这样声明你的记忆: