jus*_*ser 20 android kotlin kotlin-coroutines kotlin-flow
当试图从 Flow 中收集时,类型突然不匹配,它正在工作,然后突然启动。
在我的视图模型中:
class MyViewModel: ViewModel() {
lateinit var river: Flow<Int>
fun doStuff() {
river = flow {
emit(1)
}.flowOn(Dispatchers.Default)
.catch {
emit(0)
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的活动中,我有以下内容:
lifecycleScope.launch {
viewModel.river.collect { it ->
// this whole collect is what has the error.
}
}
Run Code Online (Sandbox Code Playgroud)
但collect给出了错误:Type mismatch: inferred type is () -> Unit but FlowCollector<Int> was expected。
这怎么会发生?
Com*_*are 43
可能,您正在使用直接collect()函数Flow。
对于你的语法,你需要import 的collect()扩展功能。
(我真的希望他们不要给这些命名相同的...)
我在尝试从某些数据存储文件收集多个流时遇到了同样的问题。首先,确保您已在应用程序级 gradle 文件中导入这两个依赖项。另请确保将版本号替换为合适的版本。
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.4.0-beta01")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2")
Run Code Online (Sandbox Code Playgroud)
同步你的gradle文件后,导入collect;
import kotlinx.coroutines.flow.collect
Run Code Online (Sandbox Code Playgroud)
您collect{ }现在应该可以正常工作了。
| 归档时间: |
|
| 查看次数: |
1532 次 |
| 最近记录: |