Как Предотвратить Циклы Навигации Во Флаттере

#flutter #dart #navigation

Вопрос:

В моем приложении у меня всего 13 экранов, на некоторых из них есть ссылки на другие экраны, у меня также есть ящик, в котором есть ссылки на большинство из этих экранов.

На следующем рисунке показан единственный поток навигации, который мне нужен в приложении:

введите описание изображения здесь

как вы можете видеть , единственными экранами, на которых есть ссылки на другие экраны home , warehouses close expiry являются экраны и. Но поскольку ящик существует на каждом экране, я теперь могу перемещаться от warehouses products «потом warehouses «, «потом products » и так далее, или от close expiry warehouses products » до home » до « close expiry до конца времен«.

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

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

Есть ли какой-нибудь способ добиться этого?

Заранее спасибо.

Комментарии:

1. Да, вы можете это сделать. Вы должны использовать Навигатор 2.0 и сохранять состояние навигации.

2. вы можете попробовать использовать навигатор 2.0 или использовать методы из навигации 1.0, такие как popUntil, чтобы вернуться на домашнюю страницу, и pushReplacement, чтобы перейти с одной страницы из ящика на другую

3. @moneeralhashim большое спасибо

4. @pedropimont большое тебе спасибо

5. нет, не обязательно, только если вам это нужно. особенность navigator 2.0 в том, что он дает вам полный контроль над вашим стеком страниц и обеспечивает лучший интерфейс в Интернете , он не имеет ничего общего с вложенной навигацией, и, на мой взгляд, в большинстве случаев это излишне, и если вы не планируете использовать веб, я бы остановился на navigator 1.0, так как navigator 2.0 намного сложнее и сложнее.