android kotlin`何时``satement''not smartcasting

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

和我的MainViewModel

 private val _mainState = MutableStateFlow(MainState.Loading)
    val mainState = _mainState.asStateFlow()
        .onStart {
            if(!hasCompleted) {
                getLoginCredentials()
                hasCompleted = true
            }
thin在我的综合

val mainState by mainViewModel.mainState.collectAsStateWithLifecycle(initialValue = MainState.Loading) when(val status = mainState) { MainState.Loading -> { Box( modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center ) { CircularProgressIndicator() } } is MainState.Success -> { NavHost( navController = navController, startDestination = if(status.isSessionActive) Route.DashboardGraph else Route.AuthenticationGraph ) { this.authentication(navController) this.dashboardGraph(navController) this.settingsGraph(navController) } } } }
我在此行中遇到以下错误

is MainState.Success -> {

这是错误

Incompatible types: MainState. Success and MainState. Loading


    

替换:

private val _mainState = MutableStateFlow(MainState.Loading)
android kotlin mutablestateflow
1个回答
0
投票

private val _mainState: MutableStateFlow<MainState> = MutableStateFlow(MainState.Loading)
或:

private val _mainState = MutableStateFlow<MainState>(MainState.Loading)
    

© www.soinside.com 2019 - 2025. All rights reserved.