Как реализовать мастер-навигационный поток с помощью Проводника?

Я создаю приложение для Android с помощью Conductor. Допустим, приложение имеет следующие экраны

  • Список виджетов
  • Детали виджета
  • Создать виджет: шаг 1
  • Создать виджет: шаг 2

Как реализовать следующий поток навигации с помощью Проводника?

  1. Пользователь запускает приложение, выдвигается контроллер списка виджетов.
  2. Пользователь нажимает Новый виджет, Создать виджет: Шаг 1 контроллер выдвигается.
  3. Пользователь щелкает Перейти к шагу 2, создать виджет: контроллер шага 2 перемещается.
  4. Пользователь нажимает "Подтвердить", виджет создан, и теперь я хочу открыть " Создать виджет: шаг 1" и " Создать виджет: шаг 2" и нажать " Детали виджета" для вновь созданного виджета.

Если я вернусь обратно к списку виджетов, а затем нажму "Детали виджетов", список виджетов на мгновение отобразится до того, как отобразятся сведения о виджетах.

Как мне добиться этого за одну транзакцию и перенаправить пользователя прямо в " Детали виджета", одновременно вставив " Создать виджет: шаг 1" и " Создать виджет: шаг 2" из заднего стека?

1 ответ

Вы можете использовать метод router.setBackstack() и использовать теги при выполнении шагов для последующей фильтрации:

  1. Настройки корневого контроллера

    if (!hasRootController()) {
        setRoot(RouterTransaction.with(listController).tag("list"))
    }
    
  2. Нажмите первый контроллер

    router.pushController(RouterTransaction.with(firstStepController).tag("step1"))
    
  3. Нажмите второй контроллер

    router.pushController(RouterTransaction.with(secondStepController).tag("step2"))
    
  4. Нажмите деталь контроллера

    router.setBackstack(
        router.backstack.filter { it.tag() != "step1" && it.tag() != "step2" } + RouterTransaction.with(detailController).tag("detail")
        SimpleSwapChangeHandler() // Or other change handler for proper animation
    )
    
Другие вопросы по тегам