Android Koin – не найден после обновления до 3.2.0

Я использовал Koin в своем приложении для Android. Я использовал 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

Неразрешенная ссылка: монета

Кажется, пакет 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)
})
2
0
425
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для всех, у кого такая же проблема,

решение было немного другим. Поэтому вместо

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

Мне нужно было получить viewModel напрямую вот так:

activity.viewModelScoped<MySharedViewModel>(getKoin().scopeRegistry.rootScope).value

Другие вопросы по теме