- Работа с навигацией в многомодульных проектах
- Тут нет работы с сетью или кэширования. Просто переходы между экранами. Пример полноценного мномодульного приложения -> Stocks(in progress)
- feature это модули, которые несут какую-нибудь практическую пользу пользователю (с которыми может взаимодействовать пользователь например)
- shared модули содержат какие-то утилиты или код который может использоваться в нескольких местах
- app модуль соединяет в себе все остальные feature модули, а также предоставляет им зависимости
- Dagger 2
- MVVM & Clean arch
- Jetpack navigation
- Multi module arch
Каждый :feature модуль создает для себя интерфейс (Router), в котором перечисляет возможные варианты навигации. Реализация этого интерфейса будет лежать в модуле :app, сама фича будет использовать реализацию, которую ей прокинет dagger. В конструктор Router'а передается navigator - это класс который реализует навигацию
Модуль содержит scopes для dagger'a и ViewModelFactory
Модуль для навигации. Содержит NavigationCommand
- data class с id action'a.
В этой реализаии каждый feature модуль может создавать для себя интерфейс с полями NavigationCommand
, на какую фичу нужно перейти. Реализация этого интерфейса будет лежать в модуле app.
Модуль с мок данными
Модуль со списком принципов SOLID. Есть навигация к каждому принципу (фиче)
Для того чтобы все работало корректно необходимо раскоментить/закоментить реализации в в классах RouterImpl