[英](Jetpack Compose) -> Loading State is not working correctly
我试图显示一个加载微调器,但加载 state 总是在撰写 function 时显示错误值。
我创建了一个自定义微调器,但它没有显示
@Composable
private fun MainContent(viewModel: SearchJourneyViewModel = hiltViewModel()) {
val state = viewModel.state
Loader(isDialogVisible = state.isLoading)
}
在 viewModel 加载 state 正在刷新并返回我需要的值:
@HiltViewModel
class SearchJourneyViewModel @Inject constructor(
private val cityRepository: CityListRepository,
) : ViewModel() {
var state by mutableStateOf(SearchJourneyState().mock())
private set
init {
loadCityList()
}
private fun loadCityList() {
viewModelScope.launch {
cityRepository
.getCityList()
.collect { result ->
when (result) {
is Resource.Success -> {
state =
state.copy(
fromCity = //result,
toCity = //result,
isLoading = false,
error = null
)
}
}
is Resource.Error -> {
state =
state.copy(
fromCity = null,
toCity = null,
isLoading = false,
error = result.message
)
}
is Resource.Loading -> {
state =
state.copy(isLoading = result.isLoading)
}
}
}
}
}
}
这是我的 state:
data class SearchJourneyState(
val cityList: List<City>? = null,
val isLoading: Boolean = false,
val isCityLoading: Boolean = false,
)
主要问题似乎是您收集 state 的方式。
尝试将其定义为StateFlow
:
val viewStateFlow: StateFlow<VS> = MutableStateFlow()
然后简单地将它收集到你的 UI 层:
val viewState by viewModel.viewStateFlow.collectAsState()
然后你应该能够在 UI 中加载更改:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.