Pull to refresh

Comments 17

А в каком из рассмотренных вариантов из коробки работает возврат на предыдущую вкладку нижней навигации по нажатию кнопки "назад"?

В случае с Navigator для этого можно использовать WIllPopScope. Им оборачивается все приложение и мы всегда получаем событие нажатия кнопки назад. Тогда сами можем решать - будет ли это возврат внутри вкладки, смена вкладки на предыдущую, либо возврат назад в рамках самого верхнего уровня навигации.

Когда используем Router, мы переопределяем событие onPopPage у Navigator-а, который возвращается из RouterDelegate, и также сами решаем, что делать, нужно ли спускать это событие вниз по дереву навигации. В том числе можем вернуться на предыдущую вкладку. Из готовых примеров можно посмотреть на Routemaster - там реализовано такое поведение, причем его можно менять через конфигурацию роута.

Такая же штука есть из коробки у библиотеки navigation_manager :)

А WillPopScope все еще ломает возвращение на предыдущую страницу свайпом в ios?

Когда оборачиваешь приложение целиком не ломает и не ломал. Честно говоря, я не сталкивался с ситуацией, когда это поведение ломалось, нашел только это issue.

Раза два читал их статью на медиуме про навигатор 2.0 и так не вкурил, как его готовить. У вас это получилось лучше, чем у команды флаттера!

Спасибо за позитивный фидбэк! Очень рад, что материл оказался для вас полезным, у самого были те же трудности) Для полного понимания очень советую посмотреть на код библиотек из статьи, можно найти интересные детали реализации.

Как то все это сложно.А Вы смотрели реализацию роутинга у GetX ?Там как раз все просто и понятно.В примерах что Вы привели настолько все запутано что отпадает желание вообще на флаттере работать

Сложность есть, не спорю, но она дает гибкость.

Если у вас условный стартап, с небольшой командой, либо просто нет необходимости в проекте делать больше, чем дает Navigator, то его может быть достаточно. Тогда нет смысла тратить ресурсы на другие решения, все-таки инструмент должен выбираться исхода из задач. В нашем случае проект рассчитан на долгосрочную поддержку и участие большого количества команд, поэтому гибкость была необходима.

А GetX также под капотом использует Navigator 2.0, так что его можно отнести к списку библиотек из статьи. Сложность осталась, но ее забрали на себя разработчики этих библиотек.

UFO just landed and posted this here
Не обманывайтесь, GetX использует старую императивную навигацию. Это всего лишь GlobalKey, ведущий на обычный навигатор, с переименованными методами.

Раз
Два

Хотя бы одна из этих библиотек поддерживает neglect ?

Если под neglect имеете ввиду переход, без добавления записи в бэкстек браузера, то любая из библиотек это поддерживает при использовании встроенного метода Router.neglect. Так как мы не используем flutter for web, я такое не пробовал делать, но должно работать:

Пример кода
Router.neglect(context, () {
  WhatEverNavigationLib.navigate(somewhere);
});

Хотел бы предложить вам посмотреть и оценить библиотечку navigation_manager)
В ней пока мало функций, но возможно есть потенциал. Было бы хорошо узнать чье-нибудь мнение)

Приятная библиотека! Мне в целом нравится концепция поддеревьев, хорошая идея с duplicate strategy, у некоторых проектов может быть потребность в такой фиче.

Сейчас не хватает документации, чтобы было проще понять используемые концепции. Будет интересно посмотреть за развитием. Добавил в список библиотек 😉

UFO just landed and posted this here
Sign up to leave a comment.