Вот главный экран : < /p>
Код: Выделить всё
val uiState by viewModel.uiState.collectAsState()
NavHost(
...
) {
composable(route = MainScreen.FirstScreen.name) {
FirstScreen(
viewModel,
onItemSelected = {
viewModel.setSelectedItem(it)
navController.navigate(MainScreen.SecondScreen.name)
}
)
}
composable(route = MainScreen.SecondScreen.name) {
println("selected item from state: ${uiState.selectedItem.id}") // THIS IS NULL
SecondScreen(
viewModel,
uiState.selectedItem
)
}
}
< /code>
viewmodel: < /p>
private val _uiState = MutableStateFlow(UIState())
val uiState: StateFlow = _uiState.asStateFlow()
fun setSelectedItem(item: Item) {
_uiState.update { currentState ->
currentState.copy(
selectedItem = item
)
}
println("update uiState with ${_uiState.value.selectedItem.id}") // THIS SHOWS THE CORRECT ID
}
< /code>
Объект элемента пока простая строка: < /p>
data class Item (
val id: String = ""
)
Кажется, что Uistate не обновляется с моего основного экрана, где происходит навигация, но, похоже, это делает то же самое, что, похоже, лаборатория кода, о которой я говорю. Я что -то здесь упускаю?
Подробнее здесь: https://stackoverflow.com/questions/794 ... -its-value
Мобильная версия