I'm building an Android app with Jetpack Compose, and I'm facing an issue with passing selected data from one screen to another using a ViewModel.
Here's what I'm trying to achieve:
- Screen A has a click listener that opens Screen B.
- Screen B displays a list of items, and the user can select one item.
-
Upon selecting an item in Screen B, I want to pass the selected data back to Screen A using a ViewModel.
class MyViewModel : ViewModel() { private val _selectedMusicItem = MutableStateFlow(null) val selectedMusicItem = _selectedMusicItem.asStateFlow() fun updateSelectedMusicItem(musicItem: MusicItem) { _selectedMusicItem.value = musicItem } }
viewModel.updateSelectedMusicItem(selectedMusicItem) navController.navigateUp() And in Screen A, I'm trying to observe the selected data like this:
val selectedMediaListState by viewModel.selectedMusicItem.collectAsState() However, the selected data isn't updating in Screen A when I navigate back from Screen B.
Can anyone help me understand how to correctly pass selected data from one screen to another using a ViewModel in Jetpack Compose? Any insights or suggestions would be greatly appreciated. Thank you!
Источник: https://stackoverflow.com/questions/781 ... in-jetpack