package fr.freekit.koin
import org.koin.core.Koin
import org.koin.core.KoinComponent
interface FKoinKomponent : KoinComponent {
override fun getKoin(): Koin = KoinCtx.koin
}
package fr.freekit.koin
import android.content.Context
import android.util.Log.VERBOSE
import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidLogger
import org.koin.core.Koin
import org.koin.core.logger.Level
import org.koin.dsl.koinApplication
object KoinCtx {
private lateinit var appContext: Context
val koin: Koin by lazy {
koinApplication {
androidContext(appContext)
androidLogger(level = Level.ERROR)
modules(
listOf(
// List all your Koin Module in here
)
)
}.koin
}
@Synchronized
fun init(context: Context) {
check(!KoinCtx::appContext.isInitialized) { "Already initialized!" }
appContext = context.applicationContext
}
}
package fr.freekit.sampleApp
import org.koin.android.ext.koin.androidContext
import org.koin.core.context.startKoin
import fr.freekit.KoinCtx.init
class SampleFreekit: MultiDexApplication() {
override fun onCreate() {
super.onCreate()
KoinCtx.init(context)
startKoin {
androidContext(this@SampleFreekit)
modules(
listOf(
// list your app modules in here
)
)
}
}
}