Ну вообще связь модулей и навигация - одна из главных проблем и сложностей архитектуры приложений
там навигация пишется на раз два. через передачу VM, а V подгружается сама по DataTemplate
ну яж не спорю,но все равно почему если это так просто не дать это из коробки? Ну и есть куда более сложносоставленный случаи
а что смешного?
где нужен стек навигации итд
по тому что навигация может быть очень разной, она может быть супер простой, а может быть очень сложной, с сохранением состояний, истории, перескоками и т.п.
Да когда у тебя переход по кнопке все проссто… А иногда у тебя сложный процесс последовательность и набор шагов которого зависит от различных факторов
не знаю, мне нужен конкретный кейс. сложностей сложный интерфейс с навигацией сделать не было проблем
У тебя есть модуль отвечающий за оплату. Лежит в отдельной библиотеке. Несколько экранов со своими переходами и прочим. Используется много где. Есть модуль кастомных форм который умеет собирать и формировать платежные данные по форме пришедшей с веба. Причем эти формы могут быть многошаговыми. Лежит в отдельной библиотеки, так как может использоваться по сути где угодно и никак не привязан ни к какому процессу. У тебя есть штук 5-6 экранов для активации банковской карты. Последовательность и набор этих экранов зависят от статуса пользоватя, вида карты и прочей ерунды. Оплата или витрина в зависимости от типа пользователя и карты тоже могут присутствовать/отсутствовать. Из всего этого тебе нужно собрать единый процесс. Не изменяя модуль оплаты и динамических форм. Потому-что они не должны ничего знать об активации и выпуске карт.
вновь, не вижу проблемы. есть ViewModel которая может в себе собирать как другие VM так и модели данных, отображая всё красивенько и без вмешательств
@sttrox вот тебе пример
Кто будет решать куда надо переходить?) Сколько у тебя активных кнопок перехода во всем процессе? Ты будет каждый экран отдельно биндить на отдельный метод перехода? ViewModel будут между собой общаться? Если нет, то как основная ViewModel узнает о том что процесс полаты или заполнения формы завершен?)
я не знаю сколько кнопок, но одна кнопка может иметь разные варианты событий, в зависимости от условий ввода
Кстати да, тут еще и в любом шаге ты можешь вернуться назад))
Будешь ViewModel откатывать?)
ну я в стек херачил вюмодели просто. или в некоторых моментах на синглтонах, зависит
так данные отображаются не за счёт создания VM, а за счёт Model, которая адоптируется через VM и показывает то что надо. Надо вернуться — просто берём прошлую VM из стека навигации, или пересоздаём на основе её данных
Но ты предлагал встраивать одну ViewModel в другую. Не попадет ли у тебя в какой-то момент на stack модель внутреннего модуля (заполнения формы) вместо модели всего процесса? И если ты вернулся назад, то модуль формы ожидает найти на стеке свою ViewModel
тяжко вот это представить. Но думаю проблем сохранить состояние не составит сложности ,если нужно такое поведение
А если у них разные стеки, то проблема в том, что изменение одной из вложенных VM может не вызвать изменения на другом стеке, или что еще хуже, усли ты не копируешь модели, то изменение все VM на стеке
Обсуждают сегодня