Неразрешенная ссылка на модуль Koin - PullRequest
0 голосов
/ 03 августа 2020

У меня есть все мои классы, которые я хотел бы добавить в класс modules как таковой.

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

У меня есть класс Application, который выглядит так, который объявлен в manifest.

    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

1 Ответ

0 голосов
/ 03 августа 2020

myModule определяется внутри class modules. Вы не можете получить к нему доступ без экземпляра этого класса.

Большинство людей определяют модули прямо под объявлением класса Application как глобальную переменную. Вы можете сделать его 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. Но если вам действительно нужен этот класс и вы создали его с определенной целью, вы можете создать экземпляр этого класса и вызвать его myModule переменную:

modules(listOf(modules().myModule))
...