zsperske
06/23/2022, 4:32 PM//I create a scroll state in my view model and pass it here to be used
val scrollState = rememberSaveable(saver = ScrollState.Saver) { viewModel.state.scrollState }
//Add to my column
Modifier.verticalScroll(scrollState)
//In on save instance state of an Android View I grab the state and save it to a bundle
savedState.scrollPosition = viewModel.state.scrollState.value
However, the scroll state’s value is always 0. Am I going about this all wrong?chatterInDaSkull
06/23/2022, 4:41 PMrememberScrollState()
somewherezsperske
06/23/2022, 4:42 PMval scrollState = rememberSaveable(saver = ScrollState.Saver) { viewModel.state.scrollState }
zsperske
06/23/2022, 4:42 PMrememberScrollState
since I need to create the scroll state in my view modelchatterInDaSkull
06/23/2022, 4:55 PMrememberSaveable
and simply use rememberScrollState()
and manually set viewModel.state.scrollState = scrollState.value
and try it out?
probably not good for performance and might incur a lot of recompositions but still might help validate somethingzsperske
06/23/2022, 5:09 PMzsperske
06/23/2022, 5:09 PMchatterInDaSkull
06/23/2022, 5:11 PMderivedStateOf
to optimize a bit
Out of curiosity, what does your view model look like with respect to the scroll state? how is it defined?chatterInDaSkull
06/23/2022, 5:13 PMrememberSaveable(saver = ScrollState.Saver) { viewModel.state.scrollState }
is only giving it an initial state, I think it creates new scroll state objects (once again easily verifiable)zsperske
06/23/2022, 6:17 PMclass ViewModel() {
var state by mutableStateOf(MyState())
private set
fun updateScrollPosition(position: Int) {
state = state.copy(scrollState = ScrollState(position)
}
}
data class MyState(val scrollState: ScrollState, ...)
To test your theory I temporarily made the scrollState
a var
which breaks recomposition. But if I were to change it to instead have a updateScrollState
method I think I’d end up in an endless loop of recompositionzsperske
06/23/2022, 6:19 PMzsperske
06/23/2022, 6:52 PMzsperske
06/23/2022, 6:52 PMval scrollState = rememberScrollState(viewModel.state.scrollPosition)
viewModel.updateScrollState(scrollState)
chatterInDaSkull
06/23/2022, 7:29 PM