Обложка канала

Android Broadcast

Качественная выборка Android Dev новостей, тезисы важных новостей и статей, личное мнение

Android Broadcast

7 лет назад
Открыть в
#Dagger #DependencyInjection #Square

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