Android Koin - 更新到 3.2.0 后找不到

问题描述 投票:0回答:1

我在我的 Android 应用程序中使用 Koin。我使用的是 koin 版本 3.1.5 并且有这样的 libs.versions.toml

koin = "3.1.5"

koin-android = { module = "io.insert-koin:koin-android", version.ref = "koin" }
koin-androidx-workmanager = { module = "io.insert-koin:koin-androidx-workmanager", version.ref = "koin" }
koin-androidx-navigation = { module = "io.insert-koin:koin-androidx-navigation", version.ref = "koin" }
koin-androidx-compose = { module = "io.insert-koin:koin-androidx-compose", version.ref = "koin" }

[bundles]  
koin-android = ["koin-core", "koin-android", "koin-androidx-workmanager", "koin-androidx-compose", "koin-androidx-navigation"]

一切顺利。在我导入的代码中

import org.koin.androidx.viewmodel.koin.getViewModel

并致电

getViewModel
,没有任何问题。

现在我更新到版本3.2.0,但在我的代码中我现在有这个错误:

导入org.koin.androidx.viewmodel。koin.getViewModel

未解决的参考:koin

我之前用的包org.koin.androidx.viewmodel.koin好像找不到了。

我首先假设我需要添加更多导入并添加我能找到的所有硬币库

koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" }
koin-android = { module = "io.insert-koin:koin-android", version.ref = "koin" }
koin-androidx-workmanager = { module = "io.insert-koin:koin-androidx-workmanager", version.ref = "koin" }
koin-androidx-navigation = { module = "io.insert-koin:koin-androidx-navigation", version.ref = "koin" }
koin-androidx-compose = { module = "io.insert-koin:koin-androidx-compose", version.ref = "koin" }
koin-android-compat = { module = "io.insert-koin:koin-android-compat", version.ref = "koin" }
koin-androidx-viewmodel = { module = "org.koin:koin-androidx-viewmodel", version.ref = "koin" }
koin-androidx-scope = { module = "org.koin:koin-androidx-scope", version.ref = "koin" }
koin-androidx-fragment = { module = "org.koin:koin-androidx-fragment", version.ref = "koin" }
koin-androidx-lifecycle = { module = "androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "koin" }

但没有一个起作用。如果没有它,我的代码

getKoin().getViewModel(...)
将无法工作。我也尝试了 3.5.0 等较新的版本,但也没有成功。

那个包裹去哪儿了?或者如果合并了,哪里可以找到那个方法?

--- 编辑 ---

好像有一个包裹 导入 org.koin.androidx.viewmodel.ext.android.getViewModel 它提供了 getViewModel 但这与我从代码中调用的函数不兼容。这里还是找不到getViewModel。

getKoin().getViewModel(owner = {
  ViewModelOwner.fromAny(activity)
})
android gradle viewmodel koin
1个回答
0
投票

对于有同样问题的每个人,

解决方案有点不同。 所以而不是

getKoin().getViewModel(owner = {
   ViewModelOwner.fromAny(activity)
})

我必须像这样直接获取viewModel:

activity.viewModelScoped<MySharedViewModel>(getKoin().scopeRegistry.rootScope).value
© www.soinside.com 2019 - 2024. All rights reserved.