首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在活动中收集StateFlow

无法在活动中收集StateFlow
EN

Stack Overflow用户
提问于 2021-11-08 20:06:14
回答 1查看 74关注 0票数 1

我只是在学习StateFlow。我有一个简单的StateFlow要观察:

代码语言:javascript
复制
private val _userClickedAction = MutableStateFlow( Event(false))
val userClickedAction: StateFlow<Event<Boolean>> = _userClickedAction.stateIn(
    scope = viewModelScope,
    started = WhileSubscribed(5000),
    initialValue = Event(false)
)

我试着在这样的活动中观察到它:

代码语言:javascript
复制
    lifecycleScope.launch {
        repeatOnLifecycle(Lifecycle.State.STARTED) {
            valuePropViewModel.userClickedAction.collect {
                
              valuePropViewModel.actionContext.runActionNamed(SECOND_OPTION_SELECTED)
            }
        }
    }

它不能编译,我得到了编译错误:

Type mismatch. Required: FlowCollector<Event<Boolean>> Found: () → Unit

我使用的是:

//生命周期组件

代码语言:javascript
复制
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"

implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"

implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"

implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

其中$lifecycle_version = 2.4.0

EN

回答 1

Stack Overflow用户

发布于 2021-11-09 14:39:17

显然,我使用了错误的collect版本。

代码语言:javascript
复制
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.4.0-beta01")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2")

import kotlinx.coroutines.flow.collect 

Type mismatch inferred type is () -> Unit but FlowCollector was expected

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69889334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档