我试图使用SharedFlow从UI传递事件到ViewModel,以下是我的ViewModel类:
class MainActivityViewModel () : ViewModel() {
val actions = MutableSharedFlow<Action>()
private val _state = MutableStateFlow<State>(State.Idle)
val state: StateFlow<State> = _state
init {
viewModelScope.launch { handleIntents() }
}
suspend fun handleIntents() {
actions.collect {
when (it) {...}
}
}
}
这就是我如何发出操作的方式。
private fun emitActions(action: Action) {
lifecycleScope.launch {
vm.actions.emit(action)
}
}
首次发射如预期一样进行,但之后就无法从视图模型中发射/收集。
我做错了什么吗?
emitActions()
时发生了什么的上下文信息?actions.collect()
是否没有使用新值进行调用?您可以尝试调试相同的代码(在collect { }
和emitActions()
中设置断点以验证其是否正常工作),并分享结果吗? - Yashovardhan99