我正在编写一个简单的应用程序,以便学习,该应用程序有两个viewModels,ItemListViewModel显示项目列表并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)