diff --git a/projects/android/koin-androidx-navigation/src/main/java/org/koin/androidx/navigation/NavGraphExt.kt b/projects/android/koin-androidx-navigation/src/main/java/org/koin/androidx/navigation/NavGraphExt.kt index 8d9be8429..f223f5b22 100644 --- a/projects/android/koin-androidx-navigation/src/main/java/org/koin/androidx/navigation/NavGraphExt.kt +++ b/projects/android/koin-androidx-navigation/src/main/java/org/koin/androidx/navigation/NavGraphExt.kt @@ -35,9 +35,15 @@ import org.koin.core.qualifier.Qualifier inline fun Fragment.koinNavGraphViewModel( @IdRes navGraphId: Int, qualifier: Qualifier? = null, - noinline ownerProducer: () -> ViewModelStoreOwner = { findNavController().getBackStackEntry(navGraphId) }, + noinline ownerProducer: (() -> ViewModelStoreOwner)? = null, noinline extrasProducer: (() -> CreationExtras)? = null, noinline parameters: (() -> ParametersHolder)? = null, ): Lazy { - return viewModel(qualifier, ownerProducer, extrasProducer, parameters) + val backStackEntry by lazy { findNavController().getBackStackEntry(navGraphId) } + return viewModel( + qualifier, + ownerProducer ?: { backStackEntry }, + extrasProducer ?: { backStackEntry.defaultViewModelCreationExtras }, + parameters + ) }