Как реализовать мастер-навигационный поток с помощью Проводника?
Я создаю приложение для Android с помощью Conductor. Допустим, приложение имеет следующие экраны
- Список виджетов
- Детали виджета
- Создать виджет: шаг 1
- Создать виджет: шаг 2
Как реализовать следующий поток навигации с помощью Проводника?
- Пользователь запускает приложение, выдвигается контроллер списка виджетов.
- Пользователь нажимает Новый виджет, Создать виджет: Шаг 1 контроллер выдвигается.
- Пользователь щелкает Перейти к шагу 2, создать виджет: контроллер шага 2 перемещается.
- Пользователь нажимает "Подтвердить", виджет создан, и теперь я хочу открыть " Создать виджет: шаг 1" и " Создать виджет: шаг 2" и нажать " Детали виджета" для вновь созданного виджета.
Если я вернусь обратно к списку виджетов, а затем нажму "Детали виджетов", список виджетов на мгновение отобразится до того, как отобразятся сведения о виджетах.
Как мне добиться этого за одну транзакцию и перенаправить пользователя прямо в " Детали виджета", одновременно вставив " Создать виджет: шаг 1" и " Создать виджет: шаг 2" из заднего стека?
1 ответ
Вы можете использовать метод router.setBackstack() и использовать теги при выполнении шагов для последующей фильтрации:
Настройки корневого контроллера
if (!hasRootController()) { setRoot(RouterTransaction.with(listController).tag("list")) }
Нажмите первый контроллер
router.pushController(RouterTransaction.with(firstStepController).tag("step1"))
Нажмите второй контроллер
router.pushController(RouterTransaction.with(secondStepController).tag("step2"))
Нажмите деталь контроллера
router.setBackstack( router.backstack.filter { it.tag() != "step1" && it.tag() != "step2" } + RouterTransaction.with(detailController).tag("detail") SimpleSwapChangeHandler() // Or other change handler for proper animation )