https://kotlinlang.org logo
#compose
Title
# compose
a

aperfilyev

02/17/2021, 8:26 PM
why does my factory being invoked when I navigate back to this composable? I’m using jetpack navigation as well
Copy code
private val factory = InvalidatingPagingSourceFactory { FeedSource(pages.value, api) }

    val items: Flow<PagingData<FeedItem>> = Pager(PagingConfig(20)) {
        factory.invoke()
    }.flow
composable
Copy code
@Composable
fun FeedScreen(factory: ViewModelProvider.Factory, onItemClick: (Long) -> Unit) {
    val viewModel = viewModel<MainViewModel>(factory = factory)
    val items = viewModel.items.collectAsLazyPagingItems()

    LazyColumn(content = {
        items(items) { item ->
            if (item != null) {
                RealRowItem(item = item, onItemClick = onItemClick)
            } else {
                PlaceholderRowItem()
            }
        }
    })
}
i

Ian Lake

02/17/2021, 8:36 PM
Do you mean your
InvalidatingPagingSourceFactory
or your
ViewModelProvider.Factory
? If the former, it looks like you're missing a `cachedIn(viewModelScope)`: https://developer.android.com/topic/libraries/architecture/paging/v3-paged-data#pagingdata-stream
You still need that line
a

aperfilyev

02/17/2021, 9:03 PM
cachedIn(viewModelScope)
exactly, thanks!
2 Views