添加依赖
[versions]
koin = "3.6.0-Beta4"
koinComposeMultiplatform = "1.2.0-Beta4"
[libraries]
koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" }
koin-compose = { module = "io.insert-koin:koin-compose", version.ref = "koinComposeMultiplatform" }
koin-compose-viewmodel = { module = "io.insert-koin:koin-compose-viewmodel", version.ref = "koinComposeMultiplatform" }
commonMain.dependencies {
api(libs.koin.core)
implementation(libs.koin.compose)
implementation(libs.koin.compose.viewmodel)
}
在main.kt中初始化koin
fun main() = run {
AppConfig.windowMinWidth = 800.dp
AppConfig.windowMinHeight = 1280.dp
// AppConfig.fullScreen = true
initKoin()
......
}
}
import org.koin.core.context.startKoin
import org.koin.dsl.KoinAppDeclaration
fun initKoin(config: KoinAppDeclaration? = null) {
startKoin {
config?.invoke(this)
modules( platformModule)
}
}
其中module定义
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
import org.koin.dsl.module
import repo.DefaultDeskTopRepository
import repo.DeskTopRepository
import ui.login.LoginByPwdOrCardViewModel
val platformModule = module {
singleOf(::DefaultDeskTopRepository).bind<DeskTopRepository>()
// viewModelOf(::LoginByPwdOrCardViewModel)
factory { LoginByPwdOrCardViewModel(get()) }
}
在composable中使用viewmodel
viewModelTemp: LoginByPwdOrCardViewModel = getKoin().get()
写法和Android略有不同