Kamil K
06/26/2023, 1:04 PMSaveStateHandler
?
Following docs https://github.com/evant/kotlin-inject/blob/main/docs/android.md#compose
and https://developer.android.com/topic/libraries/architecture/viewmodel/viewmodel-factories#jetpack-compose
Do I need to update the higher order function viewModel
implementation to use AbstractSavedStateViewModelFactory
and downgrade dependency to older than 2.5.0
or this also would work
@Composable
inline fun <reified VM : ViewModel> injectViewModel(
viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {
"No ViewModelStoreOwner was provided via LocalViewModelStoreOwner"
},
key: String? = null,
crossinline factory: (SavedStateHandle) -> VM,
): VM = viewModel(
viewModelStoreOwner = viewModelStoreOwner,
key = key,
factory = viewModelFactory {
initializer {
val savedStateHandle = createSavedStateHandle()
factory(savedStateHandle)
}
}
)
And second questions:
In the docs there is example
@Inject
@Composable
fun Home(homeViewModel: () -> HomeViewModel) {
val viewModel = viewModel { homeViewModel() }
...
}
this factory method homeViewModel: () -> HomeViewModel
is this method generated and provided by plugin? From samples can’t find where is this method coming from.
Thanks!