如何解决Android在使用流映射到livedata的视图模型中执行空检查
我有一个viewModel
从服务接收到Flow
,但是在调用服务之前,我需要进行基本检查,例如email
或password
是否为空返回视图错误。如何将livedata
返回视图?
这是我的viewModel
代码-
private val viewState = LoginViewState()
fun loginUser(email: String,password: String): LiveData<LoginViewState> {
if (email.isEmpty()) {
// This is not working
return liveData {
viewState.copy(loading = false,emailEmpty = true)
}
}
// This works
return loginService.performLoginAction(email,password).map {
when (it) {
...
}
}.asLiveData(Dispatchers.Default + viewModelScope.coroutineContext)
}
如您所见,我对email
是否为空进行了基本检查,如果为空,我将返回一个livedata
返回视图,并且该视图未收到任何内容。但是,当服务返回flow
且viewModel
将其映射到livedata
并返回到有效的视图时。我该如何进行基本检查?
解决方法
好的,我自己解决了-
我执行以下操作即可成功-
if (email.isEmpty()) {
return liveData {
emit(viewState.copy(loading = false,emailEmpty = true))
}
}
我基本上错过了emit
功能
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。