我在喷气背包写作课上有这样一节课:
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的对象等列表的类,记住不能正确工作