creation Extras
Provides a CreationExtras instance with the Application instance.
This is useful for creating ViewModels that require an Application instance and can be used with androidx.lifecycle.ViewModelProvider.Factory.create.
Example:
class MyViewModel(application: Application) : ViewModel() {
// ...
}
class MyViewModelFactory(private val application: Application) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
return MyViewModel(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]!!) as T
}
}
// In your Composable
val viewModel: MyViewModel = viewModel(
factory = MyViewModelFactory(LocalContext.current.applicationContext as Application)
)Content copied to clipboard
Or, more simply using this extension:
// In your Composable
val viewModel: MyViewModel = viewModel(
factory = MyViewModelFactory(LocalContext.current.applicationContext as Application),
extras = (LocalContext.current.applicationContext as Application).creationExtras
)Content copied to clipboard
Provides CreationExtras from a Context.
This is useful when you need to create a ViewModel with CreationExtras but only have a Context available. It automatically adds the Application to the extras, which is required by ViewModelProvider.AndroidViewModelFactory.