将LiveData与Coroutine结合使用时,切换到Kotlin 1.4时出现Android编译时间错误

问题描述

使用LiveData考虑一个简单的协程

liveData(viewmodelScope.coroutineContext + dispatchers.IO) {
  emitSource(repo.fetchUser().map { user ->
     // .. Do something 
  }
}

以前直到org.jetbrains.kotlin:kotlin-gradle-plugin 1.3.72 ,该语句都还不错。 现在出现错误

Type mismatch.
required:
         Unit
Found:
         disposableHandle

如果您在liveData库中看到androidx.lifecycle:lifecycle-livedata-ktx:2.2.0函数

fun <T> liveData(
    context: CoroutineContext = EmptyCoroutineContext,timeoutInMs: Long = DEFAULT_TIMEOUT,@BuilderInference block: suspend LiveDataScope<T>.() -> Unit
): LiveData<T> = CoroutineLiveData(context,timeoutInMs,block)

“ block”返回“ Unit”,这很好。但是,emitSource返回disposableHandle。 在Kotlin 1.4之前,编译器没有抱怨。现在突然我的整个源代码到处都是这些错误

是因为Kotlin的这一新功能接口功能吗? disposableHandle中只有一种方法。有什么变化?还有其他人面对吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)