问题描述
我不知道为什么,但是当我在 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 (将#修改为@)