Skip to content

Instantly share code, notes, and snippets.

@marcellogalhardo
Last active April 23, 2024 13:53
Show Gist options
  • Save marcellogalhardo/43571ca070bbbbe053903dc626e3f61e to your computer and use it in GitHub Desktop.
Save marcellogalhardo/43571ca070bbbbe053903dc626e3f61e to your computer and use it in GitHub Desktop.
rememberRetained
@Composable
internal fun <T> rememberRetained(
owner: ViewModelStoreOwner = LocalViewModelStoreOwner.current!!
key: String? = null,
block: @DisallowComposableCalls CreationExtras.() -> T,
): T {
val wrapperViewModel = viewModel(owner, key) { WrapperViewModel(block()) }
return remember(owner, key) { wrapperViewModel.instance }
}
private class WrapperViewModel(val instance: Any) : ViewModel()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment