使用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
中只有一种方法。有什么变化?还有其他人面对吗?