Skip to content

Latest commit

 

History

History
37 lines (22 loc) · 2.05 KB

File metadata and controls

37 lines (22 loc) · 2.05 KB

Главная страница репозитория

Навигация

За всю навигацию в mvi отвечает NavigationMiddleware (NavigationMiddlewareInterface).

Механзим работы этого middleware следующий: Он принимает события, унаследованные от OpenScreenEvent / CloseScreenEvent, извлекает Route из этих событий, и направляет их в ScreenNavigator.

ScreenNavigator содержит все стандартные навигаторы (ActivityNavigator, FragmentNavigator, DialogNavigator), и решает в зависимости от переданного Route (ActivityRoute, FragmentRoute, DialogRoute, итд), какой навигатор использовать, и какой экран тот откроет.

В случае, когда нам нужно подписываться на результат работы экрана, список действий такой:

  1. Route, который мы используем, необходимо унаследовать от `SupportOnActivityResultRoute

  2. В списке трансформаций подписываемся на activityNavigator.observeResult(route), где route - нужный нам роут.

  3. В OpenScreenEvent мы передаем нужный нам Route.

  4. После этого, передаем в navigationMiddleware это событие.

Composition

Для упрощения переиспользования, NavigationMiddleware можно использовать в middleware родительских экранов через композицию событий. Механизм подробное описан здесь.

Схема

Схематично все вышеописанное можно отобразить так:

Navigation flow diagram