带有 jetpackCompose 的 MutableStateFlow 和 Firebase 控制台

问题描述

我不知道为什么,但是当我在 firebase 控制台中更改字符串时,我在 MutableStateFlow 中的文本没有更改。 有人可以帮我说说为什么吗? 我正在使用emit(Resource.success(data)) 进入流程,在viewmodel 中,我在MutableStateFlow 中获取信息,然后使用collectAsstate() 获取有关视图的信息。

它工作正常,但我想测试我在 firebase 控制台中更改数据的情况,看看它是否在应用程序中更新,但没有..

如果我做错了,请告诉我原因,并告诉我这是正常工作的情况。

谢谢。

Homeviewmodel

//val _posts = MutableStateFlow(emptyList<Post>())
//val posts: MutableStateFlow<List<Post>> = _posts
val post = mutableStatelistof<Post>()

fun loadAllPosts() {
    viewmodelScope.launch {
        navRepository.getAllPosts().collect { state ->
            when (state) {
                is Resource.Loading -> {
                    loading.value = true
                }
                is Resource.Success -> {
                    post.addAll(state.data)
                    //_posts.value = state.data
                    loading.value = false
                }
                is Resource.Failure -> {
                    Log.e(state.throwable,state.throwable)
                }
            }
        }
    }
}

FirebaseNavSrc

suspend fun getAllPosts() = flow<Resource<List<Post>>>{
    emit(Resource.loading())
    val snapshot = postCollection.orderBy("timeStamp",Query.Direction.DESCENDING).get().await()
    val posts = snapshot.toObjects(Post::class.java)
    emit(Resource.success(posts))
}.catch {
    emit(Resource.Failed(it.message.toString()))
}.flowOn(dispatchers.IO)

NavRepository

suspend fun getAllPosts() = firebase.getAllPosts()

主屏幕

//val posts by homeviewmodel.posts.collectAsstate()
val post = homeviewmodel.post


LazyColumn(
            state = rememberLazyListState(),verticalArrangement = Arrangement.spacedBy(10.dp)
        ) {
            items(post) { post ->
                //val difference = homeviewmodel.getDateTime(homeviewmodel.getTimestamp())
                val date = homeviewmodel.getDateTime(post.timeStamp!!)
                QuestionCard(
                    name = post.postAuthorName!!,date = date!!,image = post.image!!,text = post.postText!!,like = 0,response = 0,topic = post.topic!!
                )
            }
        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)