首页 > 解决方案 > 无法使用 Koin、android 创建 DI 进行改造?

问题描述

我正在尝试让 DI 使用 KOIN 创建一个改造实例,这是模块

val networkModule = module {
factory { provideRetrofit(get()) }
single { provideNetworkApi(get()) }
}

fun provideRetrofit(): Retrofit {
return Retrofit.Builder()
    .baseUrl(NetworkConstant.BASE_URL)
    .addConverterFactory(MoshiConverterFactory.create())
    .client(OkHttpClient.Builder().build())
    .build()

}

fun provideNetworkApi(retrofit: Retrofit): NetworkCall =
retrofit.create(NetworkCall::class.java)

在应用程序类

class BaseApp :Application() {

override fun onCreate() {
    super.onCreate()
    startKoin {
        androidLogger()
        androidContext(this@BaseApp)
        modules(listOf(prefModule,networkModule))
    }
}
}

编译器显示错误provideRetrofit(get()

Too many arguments for public fun provideRetrofit():

我能够为另一个班级创建 DI

val prefModule = module {
single { AppPreference(androidContext()) }
}

有人可以指出我这里有什么问题吗?

标签: androidkotlindependency-injectionretrofitkoin

解决方案


是因为get()

val networkModule = module {
factory { provideRetrofit() }

single { provideNetworkApi(get()) }
}

推荐阅读