Koin 模块未解决的参考

Koin module unresolved reference

我有我所有的 classes,我想将它们注入 modules class 中。

    class modules {
        val myModule = module {
            MainActivityViewModel()
            single { MyRepo() }
        }
    }

我有一个看起来像这样的 Application class,它在清单中声明。

    class MyApplication : Application() {
        override fun onCreate() {
            super.onCreate()
    
            // start Koin!
            startKoin {
                // declare used Android context
                androidContext(this@MyApplication)
                // declare modules
                modules(listOf(myModule)) <------Here my module is unresolved(AS says unresolved reference)
            }
        }
    }

我正在使用 Koin 版本 2.1.6

myModule 定义在 class modules 内部。如果没有此 class.

的实例,您将无法访问它

大多数人所做的是在 Application class 声明下方将模块定义为全局变量。您可以将其设为 private,这样就无法从文件中访问它。

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        // start Koin!
        startKoin {
            // declare used Android context
            androidContext(this@MyApplication)
            // declare modules
            modules(listOf(myModule))
        }
    }
}

// Optionally make it private
val myModule = module {
    MainActivityViewModel()
    single { MyRepo() }
}

现在您可以删除 class modules。但是如果你真的需要这个 class 并且有目的地创建它,你可以创建这个 class 的实例并调用它的 myModule 变量:

modules(listOf(modules().myModule))