Files
TaskTTL/composeApp/src/commonMain/kotlin/com/taskttl/data/di/KoinModels.kt

48 lines
1.6 KiB
Kotlin
Raw Normal View History

2025-10-08 18:08:15 +08:00
package com.taskttl.data.di
2025-10-12 22:08:39 +08:00
import com.taskttl.data.repository.OnboardingRepository
2025-10-08 18:08:15 +08:00
import com.taskttl.data.repository.SettingsRepository
2025-10-12 22:08:39 +08:00
import com.taskttl.data.repository.impl.OnboardingRepositoryImpl
2025-10-08 18:08:15 +08:00
import com.taskttl.data.repository.impl.SettingsRepositoryImpl
import com.taskttl.data.viewmodel.CategoryViewModel
import com.taskttl.data.viewmodel.CountdownViewModel
2025-10-12 22:08:39 +08:00
import com.taskttl.data.viewmodel.FeedbackViewModel
import com.taskttl.data.viewmodel.OnboardingViewModel
import com.taskttl.data.viewmodel.SplashViewModel
2025-10-08 18:08:15 +08:00
import com.taskttl.data.viewmodel.TaskViewModel
import org.koin.core.KoinApplication
import org.koin.core.context.startKoin
import org.koin.core.module.Module
import org.koin.core.module.dsl.singleOf
import org.koin.core.module.dsl.viewModelOf
import org.koin.dsl.bind
import org.koin.dsl.module
expect fun platformModule(): Module
/**
* 初始化Koin
* @param [config] 配置
*/
fun initKoin(config: (KoinApplication.() -> Unit)? = null) {
startKoin {
config?.invoke(this)
modules(repositoryModule, viewModelModule, platformModule(), dataModule)
}
}
/** 存储库模块 */
val repositoryModule = module {
singleOf(::OnboardingRepositoryImpl).bind(OnboardingRepository::class)
singleOf(::SettingsRepositoryImpl).bind(SettingsRepository::class)
}
/** 视图模型模块 */
val viewModelModule = module {
viewModelOf(::SplashViewModel)
viewModelOf(::OnboardingViewModel)
viewModelOf(::TaskViewModel)
viewModelOf(::CategoryViewModel)
viewModelOf(::CountdownViewModel)
2025-10-12 22:08:39 +08:00
viewModelOf(::FeedbackViewModel)
2025-10-08 18:08:15 +08:00
}