kotlin Flow 未实时更新

kotlin Flow is not updating realtime

提问人:Damor vipul 提问时间:10/28/2023 最后编辑:Damor vipul 更新时间:10/31/2023 访问量:58

问:

我在接口中有一个流,并且我正在尝试在 ViewModel 中收集值,但未触发收集操作。谁能帮我弄清楚我可能做错了什么?

我正在使用匕首刀柄注射

@Module
@InstallIn(SingletonComponent::class)
object RealtimeListenerModule {

    @Provides
    fun bindingFunction() : RealtimeListener{
        return RealtimeListenerImpl()
    }

}
interface RealtimeListener {
    val user: Flow<User?>
}
class RealtimeListenerImpl : RealtimeListener {
    
    private val _userData = MutableStateFlow<User?>(null)
    override val user: Flow<User?> = _userData
    
    //this function will trigger when any events comes from firebase and i tested events are firing fine        
    fun updateUserData(){
    _userData.value = it
    }       


}
@HiltViewModel
class UserViewModelImpl
@Inject constructor(private val listener: RealtimeListener) : UserViewModel() {
    init {
        viewModelScope.launch {
            listener.user.collect {
                Log.d("TAG", "trigger $it")
            }
        }
    }
}

在只执行一次时,块在一段时间后调用任何新的事件触发器,我无法在收集块中接收值,UserViewModelImpl Log.d("TAG", "trigger $it")init{}

我也知道 init 块只会触发一次,我想要的是,当流每次我想更新用户时发出值时,我需要帮助才能提前感谢:-)

Android Kotlin 匕首-希尔特 kotlin-flow

评论

0赞 ΓDΛ 10/28/2023
接口值为“user”。重写的值为“userData”。你能尝试解决这个问题吗?
0赞 Damor vipul 10/28/2023
嘿,谢谢你的重播,我刚刚更新了问题
0赞 ΓDΛ 10/28/2023
您可以尝试使用 MutableSharedFlow 而不是 MutableStateFlow 吗?
0赞 ΓDΛ 10/28/2023
此外,我建议使用 stateflow 而不是 flow。
1赞 ΓDΛ 10/28/2023
示例用法:interface RealtimeListener { val user: StateFlow<User?> }

答: 暂无答案