微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有 jetpackCompose 的 MutableStateFlow 和 Firebase 控制台

如何解决带有 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 举报,一经查实,本站将立刻删除。