Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save benigumocom/b9b37201f463790220c1fe5853b53871 to your computer and use it in GitHub Desktop.

Select an option

Save benigumocom/b9b37201f463790220c1fe5853b53871 to your computer and use it in GitHub Desktop.
【Jetpack Compose Navigation3】EntryDecorator と ViewModel の「key」の深い関係 https://android.benigumo.com/20260501/entrydecorator-viewmodel-key/
NavDisplay(
backStack = backStack,
modifier = Modifier.padding(innerPadding),
onBack = { backStack.removeLastOrNull() },
// entryDecorators = listOf( // *
// rememberSaveableStateHolderNavEntryDecorator()
// ),
entryProvider = entryProvider {
entry<Search> { key ->
SearchScreen(
viewModel = viewModel<SearchViewModel>(
key = key.toString(), // *
factory = SearchViewModel.Factory(key)
),
onSearch = { keyword: String ->
backStack.add(Result(keyword))
}
)
}
entry<Result> { key ->
ResultScreen(
viewModel = viewModel(
key = key.toString(), // *
factory = ResultViewModel.Factory(key)
),
onClick = { id: String ->
backStack.add(Detail(id))
}
)
}
entry<Detail> { key ->
DetailScreen(
viewModel = viewModel(
key = key.toString(), // *
factory = DetailViewModel.Factory(key)
)
)
}
}
)
NavDisplay(
backStack = backStack,
modifier = Modifier.padding(innerPadding),
onBack = { backStack.removeLastOrNull() },
entryDecorators = listOf(
rememberSaveableStateHolderNavEntryDecorator(),
rememberViewModelStoreNavEntryDecorator() // *
),
entryProvider = entryProvider {
entry<Search> { key ->
SearchScreen(
viewModel = viewModel<SearchViewModel>(
factory = SearchViewModel.Factory(key)
),
onSearch = { keyword: String ->
backStack.add(Result(keyword))
}
)
}
entry<Result> { key ->
ResultScreen(
viewModel = viewModel(
factory = ResultViewModel.Factory(key)
),
onClick = { id: String ->
backStack.add(Detail(id))
}
)
}
entry<Detail> { key ->
DetailScreen(
viewModel = viewModel(
factory = DetailViewModel.Factory(key)
)
)
}
}
)
@benigumocom
Copy link
Copy Markdown
Author

【Jetpack Compose Navigation3】EntryDecorator と ViewModel の「key」の深い関係
https://android.benigumo.com/20260501/entrydecorator-viewmodel-key/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment