如何在api中的每个请求上显示一个加载图标



如何在API中的每个请求上显示加载图标?在第一个请求中,它显示进度图标,但在第二个请求中,它就像缓存一样,没有显示加载。

我的视图模型:

class CadastroViewModel:ViewModel() {
private val cadastroRepository= CadastroRepository()
private val _resultado: MutableStateFlow<MessageCad> = MutableStateFlow(MessageCad())
val resultado: StateFlow<MessageCad>
get() = _resultado

fun create(nome: String,email: String,cpf:String,telefone:String,
celular:String,senha:String,endereco:String,bairro:String,numero:String,
complemento:String,cidade:String
){
viewModelScope.launch {
try {
val r = cadastroRepository.createUser(nome,email,cpf,telefone,celular,senha,endereco,bairro,
numero,complemento,cidade)
_resultado.value = r
} catch (e:Exception) {
Log.d("Service error",e.toString())
}
}
}
}

视图模型调用:

val value: MessageCad by model.resultado.collectAsState(initial = MessageCad())

if(value.message.isEmpty()){
CircularProgressIndicator(modifier = Modifier.wrapContentWidth(Alignment.CenterHorizontally))
}

问题看起来像value.message.isEmpty()在第一次调用后永远不会返回true,因为model.resultado总是有一个不为空的结果。

你应该创建一个加载标志

private val _loading = MutableStateFlow(Boolean)
val loading: StateFlow<Boolean>
get() = _loading

设置为

viewModelScope.launch {
try {
_loading.value = true
val r =  cadastroRepository.createUser(nome,email,cpf,telefone,celular,senha,endereco,bairro,
numero,complemento,cidade)
_resultado.value = r
}catch (e:Exception){
Log.d("Service error",e.toString())
}finally {
_loading.value = false
}
}

或使用ViewState方法有Loading,成功或错误状态显示任何可能的状态的api调用

相关内容

  • 没有找到相关文章

最新更新