Kotlin 在函数中返回流类型时应为元素错误

Kotlin 在函数中返回流类型时应为元素错误,kotlin,Kotlin,我正在尝试使用以下方法从bd或服务器获取基于连接的结果,但预期会出现元素错误 我已经尝试获取调用API并在房间中存储数据,然后更新UI 按照这种方法,我过去常常解决问题,但运气不佳 * Used for get User data */ @UseExperimental(ObsoleteCoroutinesApi::class, ExperimentalCoroutinesApi::class) @Throws(APIFailureException::cla

我正在尝试使用以下方法从bd或服务器获取基于连接的结果,但预期会出现元素错误

我已经尝试获取调用API并在房间中存储数据,然后更新UI

按照这种方法,我过去常常解决问题,但运气不佳

     * Used for get User data
     */
    @UseExperimental(ObsoleteCoroutinesApi::class, ExperimentalCoroutinesApi::class)
    @Throws(APIFailureException::class)
    override fun getUserData(userId: String): Flow<UserData> {

        return flow<UserData> {
            supervisorScope {
                ​
                val userCount = userDataDao.getUserCount()
                ​
                val dbJob = async {
                    val userData: Observable<UserDataEntity> = userDataDao.getUserData()
                    val iterator = userData.openSubscription().iterator()
                    while (isActive && iterator.hasNext()) {
                        val next = iterator.next()?.toDomainModel()
                        if (next != null) {
                            emit(next)
                        }
                    }
                }
                ​
                val cm =
                    context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
                val apiJob = if (cm.activeNetworkInfo.isConnected) { //Check for network
                    async {
                        try {
                            val responseUserData =
                                userServices.getUserDetail(userId, true).handledResponse()?.data
                            if (responseUserData != null) {
                                saveUserData(responseUserData.toDomainModel())
                                responseUserData.groupRole?.let { groupRole ->
                                    saveGroupRole(groupRole.toDomainMode())
                                }
                                saveTeamInspectionTypes(responseUserData.teamInspectionTypes.toDomainModels())
                            } else {
                                throw APIFailureException("Unable to parse Userdata")
                            }
                        } catch (e: APIFailureException) {
                            if (userCount <= 1) {
                                throw e
                            } else {
                                logger.error(e) { "Unable to update from network" }
                            }
                        }
                    }
                } else if (userCount <= 1) {
                    throw NoSuchElementException("Unable to get data and no backup")
                } else null
                ​
                apiJob?.await()  // Do not pass this line until the api job is finished (or if it is null)
                dbJob.await()
            }
        }
    }
"e: D:\ARNextGenWorkSpace\ar-mobile-next\repository\src\main\java\com\arinspect\repository\UserRepositoryImpl.kt: (73, 9): Expecting an element
e: D:\ARNextGenWorkSpace\ar-mobile-next\repository\src\main\java\com\arinspect\repository\UserRepositoryImpl.kt: (76, 17): Expecting an element
e: D:\ARNextGenWorkSpace\ar-mobile-next\repository\src\main\java\com\arinspect\repository\UserRepositoryImpl.kt: (78, 17): Expecting an element
e: D:\ARNextGenWorkSpace\ar-mobile-next\repository\src\main\java\com\arinspect\repository\UserRepositoryImpl.kt: (89, 17): Expecting an element
e: D:\ARNextGenWorkSpace\ar-mobile-next\repository\src\main\java\com\arinspect\repository\UserRepositoryImpl.kt: (117, 17): Expecting an element"