MutableStateFlow и консоль Firebase с jetpackCompose

# #firebase #viewmodel #android-jetpack-compose #flow

Вопрос:

Я не знаю почему, но мой текст в MutableStateFlow не меняется, когда я изменяю строку в консоли firebase. Может ли кто-нибудь помочь мне и сказать, почему ? Я запускаю поток с помощью emit(Resource.success(данные)), и в ViewModel я получаю информацию в MutableStateFlow, а затем получаю информацию о представлении с помощью collectAsState().

Это работает правильно, но я хотел проверить случай, когда я изменяю данные в консоли firebase, и посмотреть, обновляются ли они в приложении, но нет..

Если я делаю это неправильно, скажите мне, почему, и расскажите мне случай, когда это нормально работает.

Спасибо.

Модель домашнего просмотра

 //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)
 

Наврепозиционный

 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!!
                )
            }
        }
 

Комментарии:

1. Да, вы правы ! Я отредактировал свой вопрос.