Dagger Assisted Injection
Для всех те кто решал проблему Dagger 2 с передачей параметров в зависимости, Square сделали толковое решение - Assisted Inject, которое позволяет избавиться от создания дополнительных компонентов или не задавать зависимости через setter-ы после их создания.
Рассмотрим пример:
class TextPresenter @AssistedInject constructor( @Assisted private val view: TextView, @Assisted private val text: String, private val textDecorator: TextDecorator)Параметры
view и text не находятся в графе зависимостей и поэтому мы не можем получить оттуда, и мы помечаем их с помощью @Assisted, что говорит о том что они будут задаваться динамически.Следующим шагом нам нужна фабрика для создания нашей зависимости:
class TextPresenter { @AssistedInject.Factory interface Factory { fun create( view: TextView, text: String ): TextPresenter }}Фабрика позволит нам создавать зависимости, передавая туда необходимые параметры.
Библиотека сейчас находится в версии 0.3.3, но работает без проблем, проверено личной мной на production проекте.
Все подробности полной реализации вы можете найти в статье.
Gtihub Assisted Inject