Что это простыми словами
GoRouter — это система переходов между экранами в мобильном приложении на Flutter.
Аналогия: представьте многоэтажное здание без указателей и карты. Чтобы попасть из комнаты в комнату, каждый раз нужно запоминать путь, а кнопка «назад» не работает — непонятно, куда возвращаться. GoRouter — это дорожные указатели и умный лифт: вы задаёте карту здания один раз, а дальше система сама ведёт пользователя, запоминает маршрут и знает, куда вернуться по кнопке «назад».
В приложении десятки экранов, и пользователь постоянно между ними перемещается. GoRouter организует эти переходы так, чтобы разработчику не приходилось каждый раз писать одинаковый код.
Официальное определение
Теперь, когда суть понятна, вот как GoRouter описывают в вакансиях и документации. Эту формулировку вы встретите у заказчика и в резюме — и теперь будете понимать, что за ней стоит.
«GoRouter — декларативная библиотека маршрутизации для Flutter, реализующая URL-based навигацию с поддержкой deep linking и навигационного стека».
Разберём по словам. «Декларативная» означает, что вы заранее описываете карту переходов, а не пишете команды «перейди туда-то» в каждом месте кода. «Маршрутизация» — организация переходов между экранами. «URL-based навигация» — адреса экранов задаются как ссылки, например /profile или /orders/123. «Deep linking» — возможность открыть нужный экран приложения сразу по ссылке извне, минуя главный экран. «Навигационный стек» — «стопка» экранов, по которой можно вернуться назад кнопкой.
Какую задачу решает
Навигация — обязательная часть любого приложения с несколькими экранами. Без библиотеки вроде GoRouter разработчику приходится каждый переход писать вручную: открыть корзину, открыть детали товара, вернуться назад. Это скучно, однообразно и легко запутаться.
GoRouter берёт эту рутину на себя: вы один раз описываете, какие экраны есть и как они связаны, а дальше просто указываете адрес — библиотека сама откроет нужный экран, запомнит путь и обработает кнопку «назад». Плюс она умеет открывать экран по ссылке извне — например, когда пользователь кликнул на уведомление.
К какой экосистеме относится
Язык — Dart.
Фреймворк — Flutter.
Специальность — Mobile Developer Cross-platform.
GoRouter — официально рекомендуемая командой Flutter библиотека для навигации. Это не значит, что она единственная, но если в резюме вы видите Flutter-разработчика с GoRouter — это актуальный подход.
Чем заменяется
GoRouter — не единственный способ организовать переходы во Flutter. Ту же задачу решают:
auto_route — популярная альтернатива с автогенерацией кода навигации.
Navigator — встроенный в сам Flutter базовый инструмент навигации, без библиотеки.
GetX — комбайн, который умеет много чего, в том числе и навигацию (но это не его главная роль).
Главное: переход между библиотеками навигации дешёвый. Разработчик, который работал с GoRouter, разберётся в auto_route за считаные дни — задача одна, меняется лишь способ её описания.
Что не путать
GoRouter ≠ Flutter. Flutter — это сам фреймворк для создания приложения, GoRouter — лишь одна из библиотек внутри него. Приложение на Flutter может работать и с другой системой навигации.
GoRouter ≠ Navigator. Navigator — встроенный базовый инструмент Flutter для переходов, GoRouter — удобная надстройка над ним.
GoRouter ≠ GetX. GetX — это библиотека-комбайн, которая умеет управлять данными, зависимостями и навигацией. GoRouter занимается только навигацией.
GoRouter ≠ React Router или React Navigation. Это библиотеки навигации из других миров — React и React Native соответственно, а не Flutter.
Насколько это важно при отборе
Короткий ответ: обычно это НЕ повод отбраковывать кандидата.
Навигация — обязательная часть любого приложения, и каждый Flutter-разработчик с ней работал. Но требовать именно GoRouter, если у кандидата в резюме auto_route или опыт с Navigator, — ошибка. Он освоит GoRouter за несколько дней, потому что задача та же.
Правильный подход: смотрите, есть ли у кандидата опыт с любой системой навигации во Flutter. Если есть — этого достаточно. Если в вакансии жёстко написано «только GoRouter», уточните у нанимающего менеджера, действительно ли это принципиально.
Когда всё же стоит обратить внимание: если кандидат пишет, что у него Flutter, но нигде не упоминает навигацию вообще — это повод спросить, как он организовывал переходы между экранами в проектах. Отсутствие опыта с навигацией в принципе — странно для мобильного разработчика.
Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.