Как добавить элемент аргумента фрагмента в граф зависимостей Коина? - PullRequest
2 голосов
/ 04 июня 2019

У меня есть ViewModel, у которого есть зависимость, которая должна быть взята из Fragment s arguments.

Так что-то вроде:

class SomeViewModel(someValue: SomeValue)

теперь фрагмент получает SomeValue в своем аргументе так:

class SomeFragment : Fragment() {
    val someViewModel: SomeViewModel by viewModel()

    companion object {
        fun newInstance(someValue: SomeValue) = SomeFragment().apply {
            arguments = bundleof("someKey" to someValue)
        }
    }
}

проблема в том, что я не знаю, как добавить SomeValue, взятые из Fragment arguments в модуль Koin.

Есть ли способ заставить фрагмент вносить вклад в график зависимости Коина?

1 Ответ

2 голосов
/ 04 июня 2019

Так что для всех, кто задает тот же вопрос, вот ответ:

https://insert -koin.io / документы / 2,0 / документация / koin-ядро / инъекции parameters.html

Так в основном,

вы можете создать свой модуль так:

val myModule = module {
    viewModel { (someValue : SomeValue) -> SomeViewModel(someValue ) }
}

Теперь в вашем фрагменте вы можете сделать что-то вроде:

class SomeFragment : Fragment() {
    val someViewModel: SomeViewModel by viewModel { 
        parametersOf(argument!!.getParcelable<SomeValue>("someKey")) 
    }

    companion object {
        fun newInstance(someValue: SomeValue) = SomeFragment().apply {
            arguments = bundleof("someKey" to someValue)
        }
    }
}
...