Android 在使用流映射到实时数据的视图模型中进行空检查

Android do null checks in view model that uses flow mapped to livedata

我有一个 viewModel 从服务接收 Flow 但在调用该服务之前我需要进行基本检查,例如 emailpassword为空return 视图出错。如何returnlivedata返回视图?

这是我的 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 是否为空进行了基本检查,如果为空,我 return 将 livedata 返回到视图并且视图没有收到任何内容。但是,当服务 returns 是 flow 并且 viewModel 将其映射到 livedata 并且 returns 到有效的视图时。如何对我的情况进行基本检查?

好的我自己解决了-

我执行以下操作并且有效 -

if (email.isEmpty()) {
            return liveData {
                emit(viewState.copy(loading = false, emailEmpty = true))
            }
        }

我基本上缺少 emit 功能