小编Oni*_*vas的帖子

Android Compose 无法使用 viewModel uiState 刷新

我正在编写一个简单的应用程序,以便学习,该应用程序有两个viewModelsItemListViewModel显示项目列表并ItemCreateViewModel让您创建项目,项目存储在 Room 中。

我的问题是,当我打开应用程序时,会显示列表,但在我打开详细信息并创建新项目后,返回第一个 ( ItemListViewModel) 列表不会更新。

@HiltViewModel
class ItemListViewModel
@Inject
constructor(private val itemRepository: ItemRepository) : ViewModel() {

    var uiState by mutableStateOf(value = ItemListState(state = State.LOADING))
        private set

    init {
        viewModelScope.launch(Dispatchers.IO) {
            itemRepository.fetchItems()
                .distinctUntilChanged()
                .collect { items ->
                    uiState = uiState.copy(
                        state = State.IDLE,
                        items = if (items.isNullOrEmpty()) emptyList() else items
                    )
                }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这里是撰写视图

@Composable
fun ItemList(
    viewModel: ItemListViewModel,
    navController: NavController
) {

 
    val items = viewModel.uiState.items
    ShowItems(items)  // <--- this …
Run Code Online (Sandbox Code Playgroud)

android viewmodel android-jetpack-compose

0
推荐指数
1
解决办法
4118
查看次数