one ViewModel per each composable page inside HorizontalPager

Viewed 388

I'm converting my project from view system to compose. In one of app page's in old view system I have a fragment with one viewPager which just make some pages of same fragment with different data to show. While each fragment has it's own lifecycle I can have multiple isolated viewModel per each fragment. In Compose as far as I know viewModel life cycle is attached to navigation graph, therefor each time I try to access viewModel it just return same viewModel object that's created in first call. how can I achieve same view system behavior in compose?

this is simplified version of what my app is doing now

@Composable
fun MainScreen(mainViewModel: MainViewModel = hiltViewModel()) {
    val pages = mainViewModel.pages.collectAsState()
    val pagerState = rememberPagerState(pageCount = pages.size)
    HorizontalPager(state = pagerState) {
        ChildScreen()
    }
}

@Composable
fun ChildScreen(childViewModel:ChildViewModel = hiltViewModel()){
    
}

here childViewModel is always one object for all pages

0 Answers
Related