首页 > 解决方案 > Kotlin 中是否默认停止 CircularProgressBar?

问题描述

我正在从外部 API 获取数据。在 ViewModel 类中,我收集如下数据:

private val state: MutableState<Resource<List<Item>>> = mutableStateOf(Resource(emptyList()))

viewModelScope.launch {
    repository.getItems().collect { resource ->
        state.value = resource
    }
}

在我使用的活动类中:

val resource = viewModel.state.value

when(resource) {
    is Resource.Loading -> Column(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        CircularProgressIndicator() // Starts spinning
    }
    is Resource.Success -> LazyColumn {
        items(
            resource.data
        ) { item ->
            ItemCard(item = item)
        }
    }
    is Resource.Failure -> Text(
        text = resource.message,
    )
}

一旦资源开始加载,进度条就会开始旋转。一旦我得到数据,当资源成功时,它会显示在 CardView 中并且进度条停止旋转。我从来没有在我的代码中添加阻止它旋转的东西。这怎么可能?它是否仍然处于活动状态(旋转)并且我需要以编程方式自行停止它,还是自动停止?如何处理这种情况?

标签: androidkotlinandroid-jetpack-composeandroid-viewmodelkotlin-stateflow

解决方案


推荐阅读