0

Bonsoir à tous, je suis sur koin 2.2.3 et je cherche à scope un viewModel en fonction d'un graph。杰西西:

我的项目在 Koin 2.2.3 上,我搜索以图函数的视图模型的范围。在我的 ViewModelModule 中,我得到了这个:

val Int.navQualifier: Qualifier
get() = named("FlowQualifier (NavGraphId@$this)")

fun navQualifier(navGraphId: Int) =
navGraphId.navQualifier

val Int.navScopeId: ScopeID
get() = "ScopeId (NavGraphId@${this})"

scope(navQualifier(R.id.expenses_list_nav_graph)) {
        viewModel { (activity: AppCompatActivity) ->
            ExpensesListViewModel(get(), get(), get(), activity, androidContext())
        }
    }

在我的片段中,我得到了这个:

private val viewModel: ExpensesListViewModel by sharedGraphViewModel(R.id.expenses_list_nav_graph) {
parametersOf(requireActivity())}

这是我的函数 sharedGraphViewModel:

inline fun <reified VM : ViewModel> Fragment.sharedGraphViewModel(
@IdRes navGraphId: Int,
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null) = lazy {
val store = findNavController().getViewModelStoreOwner(navGraphId).viewModelStore
getKoin().getViewModel(ViewModelParameter(VM::class, qualifier, parameters, null, store, null))}

谢谢你的帮助

4

1 回答 1

0

你应该将你的 koin 版本增加到 3.1.3,有一个全新的委托:koinNavGraphViewModel https://insert-koin.io/docs/reference/koin-android/viewmodel/#navigation-graph-viewmodel-updated-in- 313

于 2021-11-06T09:38:19.103 回答