Комментарии 17
А в каком из рассмотренных вариантов из коробки работает возврат на предыдущую вкладку нижней навигации по нажатию кнопки "назад"?
В случае с Navigator для этого можно использовать WIllPopScope. Им оборачивается все приложение и мы всегда получаем событие нажатия кнопки назад. Тогда сами можем решать - будет ли это возврат внутри вкладки, смена вкладки на предыдущую, либо возврат назад в рамках самого верхнего уровня навигации.
Когда используем Router, мы переопределяем событие onPopPage у Navigator-а, который возвращается из RouterDelegate, и также сами решаем, что делать, нужно ли спускать это событие вниз по дереву навигации. В том числе можем вернуться на предыдущую вкладку. Из готовых примеров можно посмотреть на Routemaster - там реализовано такое поведение, причем его можно менять через конфигурацию роута.
Спасибо.
Когда оборачиваешь приложение целиком не ломает и не ломал. Честно говоря, я не сталкивался с ситуацией, когда это поведение ломалось, нашел только это issue.
Раза два читал их статью на медиуме про навигатор 2.0 и так не вкурил, как его готовить. У вас это получилось лучше, чем у команды флаттера!
Как то все это сложно.А Вы смотрели реализацию роутинга у GetX ?Там как раз все просто и понятно.В примерах что Вы привели настолько все запутано что отпадает желание вообще на флаттере работать
Сложность есть, не спорю, но она дает гибкость.
Если у вас условный стартап, с небольшой командой, либо просто нет необходимости в проекте делать больше, чем дает Navigator, то его может быть достаточно. Тогда нет смысла тратить ресурсы на другие решения, все-таки инструмент должен выбираться исхода из задач. В нашем случае проект рассчитан на долгосрочную поддержку и участие большого количества команд, поэтому гибкость была необходима.
А GetX также под капотом использует Navigator 2.0, так что его можно отнести к списку библиотек из статьи. Сложность осталась, но ее забрали на себя разработчики этих библиотек.
Хотя бы одна из этих библиотек поддерживает neglect ?
Если под neglect имеете ввиду переход, без добавления записи в бэкстек браузера, то любая из библиотек это поддерживает при использовании встроенного метода Router.neglect. Так как мы не используем flutter for web, я такое не пробовал делать, но должно работать:
Пример кода
Router.neglect(context, () {
WhatEverNavigationLib.navigate(somewhere);
});
Хотел бы предложить вам посмотреть и оценить библиотечку navigation_manager)
В ней пока мало функций, но возможно есть потенциал. Было бы хорошо узнать чье-нибудь мнение)
Приятная библиотека! Мне в целом нравится концепция поддеревьев, хорошая идея с duplicate strategy, у некоторых проектов может быть потребность в такой фиче.
Сейчас не хватает документации, чтобы было проще понять используемые концепции. Будет интересно посмотреть за развитием. Добавил в список библиотек ?
Flutter: как мы выбирали навигацию для мобильного приложения?