Berkeli Alashov
06/30/2021, 10:31 AMBerkeli Alashov
06/30/2021, 10:31 AM@Composable
internal fun SearchScreen(
viewModel: SearchViewModel,
) {
// if state is remembered here, pagers WILL restart
val viewState by rememberFlowWithLifecycle(viewModel.state).collectAsState(initial = SearchViewState.Empty)
val listState = rememberLazyListState()
SearchList(viewModel, viewState, listState)
}
@Composable
internal fun SearchList(viewModel: SearchViewModel, viewState: SearchViewState, listState: LazyListState) {
// if state is remembered here, pagers WILL restart
//val viewState by rememberFlowWithLifecycle(viewModel.state).collectAsState(initial = SearchViewState.Empty)
SearchList(
//viewModel = viewModel,
viewState = viewState
// problem: viewState emissions cause these to restart (because SearchList is recomposed due to viewState changing?)
pager = rememberFlowWithLifecycle(viewModel.paged).collectAsLazyPagingItems(),
pager2 = rememberFlowWithLifecycle(viewModel.paged2).collectAsLazyPagingItems(),
pager3 = rememberFlowWithLifecycle(viewModel.paged3).collectAsLazyPagingItems(),
listState = listState
)
}
@Composable
internal fun SearchList(
// viewModel: SearchViewModel,
viewState: SearchViewState,
pager: LazyPagingItems<Item>,
pager2: LazyPagingItems<Item>,
pager3: LazyPagingItems<Item>,
listState: LazyListState
) {
// if state is remembered here, pagers WON'T restart
//val viewState by rememberFlowWithLifecycle(viewModel.state).collectAsState(initial = SearchViewState.Empty)
val searchFilter = viewState.searchFilter
}
Cicero
06/30/2021, 10:33 AMBerkeli Alashov
06/30/2021, 10:38 AMrememberSaveable
require a special Saver? Also why not the normal remember
?Cicero
06/30/2021, 10:41 AMBerkeli Alashov
06/30/2021, 10:45 AMCicero
06/30/2021, 10:47 AMCicero
06/30/2021, 10:48 AMBerkeli Alashov
06/30/2021, 10:48 AMBerkeli Alashov
06/30/2021, 10:50 AMCicero
06/30/2021, 10:53 AMBerkeli Alashov
06/30/2021, 10:59 AMBerkeli Alashov
06/30/2021, 11:50 PMFlow<PagingData>
the way you mentioned should have been enough (rememberFlowWithLifecycle
) for paging data to not restart. Could this be a bug or is this expected behavior?Adam Powell
07/01/2021, 12:37 AMBerkeli Alashov
07/01/2021, 1:35 AMrememberFlowWithLifecycle(viewModel.pagedList)
is completing and starting again with the old config.