Я использовал 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)
})
Для всех, у кого такая же проблема,
решение было немного другим. Поэтому вместо
getKoin().getViewModel(owner = {
ViewModelOwner.fromAny(activity)
})
Мне нужно было получить viewModel напрямую вот так:
activity.viewModelScoped<MySharedViewModel>(getKoin().scopeRegistry.rootScope).value