pitpit
curioustechizen
implementation "io.insert-koin:koin-androidx-navigation:$koin_version"
@OptIn(KoinInternalApi::class) inline fun <reified VM : ViewModel> Fragment.koinNavGraphViewModel( @IdRes navGraphId: Int, noinline bundleDefinition: BundleDefinition? = emptyState(), noinline parameters: ParametersDefinition? = null ): Lazy<VM> { val backStackEntry: NavBackStackEntry by lazy { findNavController().getBackStackEntry(navGraphId) } val owner = { ViewModelOwner( storeOwner = backStackEntry, stateRegistry = backStackEntry ) } val scope = getKoinScope() return viewModels(ownerProducer = { backStackEntry }) { getViewModelFactory( owner = owner, qualifier = null, parameters = parameters, scope = scope, state = bundleDefinition, clazz = VM::class ) } }
val owner = { ViewModelOwner( storeOwner = backStackEntry, stateRegistry = backStackEntry ) }
A modern programming language that makes developers happier.