Как лучше всего заменить pu sh аргументами в трепетании? - PullRequest
1 голос
/ 21 февраля 2020

Я пытаюсь найти лучшее решение для маршрутизации для этого сценария здесь. У меня есть экраны с рабочим процессом следующим образом.

Items Screen(1)   ===>  Item Details Screen(2)  ====>   Edit Items Screen(3)

На экране «Редактирование элемента», когда я редактирую и сохраняю элементы, пользователь должен вернуться к экрану сведений об элементе с некоторыми объектами и переменными, передаваемыми в качестве аргументов маршрутизации. ,

Я использовал pushReplacementNamed("/details", arguments: ItemDetailsArguments(item: item, variables: variables)); по нажатию кнопки на экране редактирования элемента.

Это работает нормально, пока я не заметил, что когда я нажимаю кнопку "Назад" на панели приложений (Экран сведений об элементе (2)), он снова возвращает меня к экрану редактирования элемента (3) вместо Экран элементов (1).

Существует ли лучший способ передавать данные с экрана 3 на 2 при нажатии кнопки, а затем возвращать пользователя обратно на экран 1 при нажатии кнопки «Назад» на экране 2

1 Ответ

1 голос
/ 21 февраля 2020

Вместо pushReplacementNamed вы можете использовать pushNamedAndRemoveUntil с предикатом для удаления нежелательных маршрутов из стека.

Подробнее о pushNamedAndRemoveUntil

pushNamedAndRemoveUntil(
   "/details", 
   ModalRoute.withName("/items"), // screen one - route predicate
   arguments: ItemDetailsArguments(item: item, variables: variables),
);

Предикат маршрута позволит вам решить, что нужно удалить из стека.

В этом случае после нажатия кнопки введите sh на «экран подробностей», а также удалите все другие маршруты, которые находятся в стеке, до основного экрана. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...