Как ввести ViewModel с помощью Koin в Kotlin? - PullRequest
0 голосов
/ 24 мая 2019

Как мы вводим ViewModel с зависимостями, используя Koin?

Так, например, у меня есть ViewModel вот так:

class SomeViewModel(val someDependency: SomeDependency, val anotherDependency: AnotherDependency): ViewModel()

Теперь официальные документы здесь , заявляет, что для обеспечения ViewModel мы могли бы сделать что-то вроде:

val myModule : Module = applicationContext {

    // ViewModel instance of MyViewModel
    // get() will resolve Repository instance
    viewModel { SomeViewModel(get(), get()) }

    // Single instance of SomeDependency
    single<SomeDependency> { SomeDependency() }

    // Single instance of AnotherDependency
    single<AnotherDependency> { AnotherDependency() }
}

Затем, чтобы внедрить его, мы можем сделать что-то вроде:

class MyActivity : AppCompatActivity(){

    // Lazy inject SomeViewModel
    val model : SomeViewModel by viewModel()

    override fun onCreate() {
        super.onCreate()

        // or also direct retrieve instance
        val model : SomeViewModel= getViewModel()
    }
}

Запутанная часть дляя в том, что обычно вам требуется ViewModelFactory для предоставления ViewModel зависимостей.Где здесь ViewModelFactory?это больше не нужно?

1 Ответ

2 голосов
/ 24 мая 2019

Здравствуйте, viewmodel () - это ключевые слова, относящиеся к домену (DSL), которые помогают создавать экземпляр ViewModel.

По этой ссылке официальной документации вы можете найти дополнительную информацию

Ключевое слово viewModel помогает объявить фабричный экземпляр ViewModel.Этот экземпляр будет обработан внутренним ViewModelFactory и при необходимости подключится экземпляр ViewModel.

...