Sudarshan
11/05/2025, 3:38 PMval languagePageViewModel = koinViewModel<LanguagePageViewModel>() to be recreated each time. Can anyone help me solve this issue? More context is in the threads.Sudarshan
11/05/2025, 3:38 PMimport org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.android.kotlin.multiplatform.library)
alias(libs.plugins.compose.multiplatform)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.kotlinx.serialization)
}
kotlin {
androidLibrary {
namespace = libs.versions.features.userOnboarding.androidLibrary.namespace.get()
compileSdk = libs.versions.features.userOnboarding.androidLibrary.compileSdk.get().toInt()
minSdk = libs.versions.features.userOnboarding.androidLibrary.minSdk.get().toInt()
}
jvm("desktop") {
compilerOptions {
jvmTarget = JvmTarget.JVM_21
}
}
iosX64()
iosArm64()
iosSimulatorArm64()
sourceSets {
val desktopMain by getting
androidMain.dependencies {
implementation(libs.compose.multiplatform.ui.tooling.preview)
}
commonMain.dependencies {
implementation(libs.localina)
implementation(libs.kotlinx.serialization.json)
implementation(libs.bundles.koin.multiplatform)
implementation(libs.bundles.compose.multiplatform.lifecycle)
implementation(libs.bundles.compose.multiplatform)
implementation(projects.designSystem.compose)
implementation(projects.shared)
}
commonTest.dependencies {
implementation(libs.kotlin.test)
}
desktopMain.dependencies {
implementation(libs.kotlinx.coroutines.swing)
}
}
}
compose.resources {
generateResClass = never
}
// Custom build directory
layout.buildDirectory.set(file("$rootDir/.build/features/user-onboarding"))
build.gradle.ktsSudarshan
11/05/2025, 3:40 PM[versions]
# Library and plugin versions
kotlin = "2.2.21"
androidGradlePlugin = "8.13.0"
activity = "1.11.0"
splashScreen = "1.0.1"
composeMultiplatform = "1.9.2"
material3 = "1.9.0"
material3Adaptive = "1.2.0"
navigation = "2.9.1"
hotReload = "1.0.0-rc02"
lifecycle = "2.9.5"
serialization = "1.9.0"
coroutines = "1.10.2"
koin = "4.1.1"
datastore = "1.1.7"
localina = "1.0.0-alpha2"
[libraries]
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activity" }
core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "splashScreen" }
compose-multiplatform-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "composeMultiplatform" }
compose-multiplatform-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "composeMultiplatform" }
compose-multiplatform-components-ui-tooling-preview = { module = "org.jetbrains.compose.components:components-ui-tooling-preview", version.ref = "composeMultiplatform" }
compose-multiplatform-ui-tooling-preview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "composeMultiplatform" }
compose-multiplatform-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "composeMultiplatform" }
compose-multiplatform-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "material3" }
compose-multiplatform-material3-adaptive = { module = "org.jetbrains.compose.material3.adaptive:adaptive", version.ref = "material3Adaptive" }
compose-multiplatform-navigation = { module = "org.jetbrains.androidx.navigation:navigation-compose", version.ref = "navigation" }
compose-multiplatform-viewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "lifecycle" }
compose-multiplatform-lifecycle-runtime = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "lifecycle" }
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" }
kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "coroutines" }
koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" }
koin-android = { module = "io.insert-koin:koin-android", version.ref = "koin" }
koin-compose = { module = "io.insert-koin:koin-compose", version.ref = "koin" }
koin-compose-viewmodel = { module = "io.insert-koin:koin-compose-viewmodel", version.ref = "koin" }
datastore = { module = "androidx.datastore:datastore", version.ref = "datastore" }
datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastore" }
localina = { module = "io.github.sudarshanmhasrup.localina:localina", version.ref = "localina" }
[bundles]
compose-multiplatform = [
"compose-multiplatform-runtime", "compose-multiplatform-resources", "compose-multiplatform-components-ui-tooling-preview",
"compose-multiplatform-foundation", "compose-multiplatform-material3", "compose-multiplatform-material3-adaptive",
"compose-multiplatform-navigation"
]
compose-multiplatform-lifecycle = ["compose-multiplatform-viewmodel", "compose-multiplatform-lifecycle-runtime"]
koin-multiplatform = ["koin-core", "koin-compose", "koin-compose-viewmodel"]
koin-android = ["koin-core", "koin-android"]
datastore = ["datastore", "datastore-preferences"]
[plugins]
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
android-kotlin-multiplatform-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "androidGradlePlugin" }
compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "composeMultiplatform" }
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
compose-hot-reload = { id = "org.jetbrains.compose.hot-reload", version.ref = "hotReload" }
kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
version catalog