Ответ вслух Middle Навигация обновлено

Навигация во Flutter-приложении

Вопрос

Как вы организуете навигацию в среднем Flutter-приложении: вкладки, авторизация, диплинки?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Беру gorouter: маршруты описаны в одном месте, каждый экран имеет адрес. Авторизацию решаю через redirect: если пользователь не вошёл, ведём на /login, а refreshListenable от сервиса авторизации заставляет роутер перепроверить, когда пользователь вышел.

Что должно прозвучать в ответе

  • `go_router` с конфигурацией маршрутов, URL как источник правды

  • Защита через `redirect` и `refreshListenable` от сервиса авторизации

  • `StatefulShellRoute` для вкладок с сохранением стека каждой

  • Диплинки: App Links/Universal Links и обработка как обычного маршрута

  • Передача id в параметрах пути, а не объектов

  • `PopScope` для подтверждения выхода

Что могут спросить следом

  • Как сохранить состояние вкладок при переключении?
  • Как открыть диалог поверх нижней панели?
  • Как протестировать навигацию?

Разбор

Образцовый ответ: «Беру go_router: маршруты описаны в одном месте, каждый экран имеет адрес. Авторизацию решаю через redirect: если пользователь не вошёл, ведём на /login, а refreshListenable от сервиса авторизации заставляет роутер перепроверить, когда пользователь вышел. Вкладки делаю через StatefulShellRoute: у каждой свой стек, и при переключении он сохраняется. Диплинки настраиваю как App Links и Universal Links, и они превращаются в обычный адрес маршрута без отдельного кода. В параметрах пути передаю id, а данные экран загружает сам, иначе ссылка не откроется после перезапуска. На формах ставлю PopScope, чтобы спросить о несохранённых изменениях»

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме