TGViewer
Flutter. Много Flutter. Много @flutter_amiga · 2.96K subscribers
Post #287 1.66K
Hola, Amigos! На связи Михаил Чернецов, Flutter dev в Amiga. Как и обещали, сегодня расскажем про Route Guard. Он позволяет манипулировать навигацией в самом приложении и переводить пользователя на необходимый экран.


class AuthGuard extends AutoRouteGuard {

@override
void onNavigation(NavigationResolver resolver, StackRouter router) {
final authenticated = myService().authenticated;
if (authenticated) {
resolver.next(true);
}
else {
resolver.redirect(const AuthRoute());
}
}
}


Единственная проблема — это необходимость использовать или глобальные переменные или каждый раз инициализировать сервисы для проверки каких-то данных.

Для этого RouteGuard, можно пометить аннотацией @injectable из одноименной библиотеки, и можно туда передать уже существующий синглтон.


@injectable
class AuthGuard extends AutoRouteGuard {
final MySingleton singleton;

AuthGuard({required this.singleton});

@override
void onNavigation(NavigationResolver resolver, StackRouter router) {
final authenticated = singleton.isAuth;
…..,
}
}


Добавление же AuthGuard в роут тоже достаточно просто:


AutoRoute(
page: HomeRoute.page,
guards: [
AuthGuard(),
],
),


Или в случае использования injectable/getIt:

GetIt.instance<AuthGuard>().


Route wrapper позволяет оборачивает роут. Используя аннотацию AutoRouteWrapper.


@RoutePage()
class ProductsScreen extends StatelessWidget implements AutoRouteWrapper {

@override
Widget wrappedRoute(BuildContext context) {
return Provider(create: (ctx) => ProductsBloc(), child: this);
}
...
}


Самое интересное то, что дочерний Route не только будет иметь доступ к блоку, но и может быть обернут, например, в Scaffold с AppBar.

На этом наша серия постов о библиотеке auto_route подошла к концу. Делитесь в комментариях, было ли полезно?
  • 🔥 5
  • ❤ 1
  • 👏 1
More from @flutter_amiga
  1. Sep 9, 2026AI BOOST’26: выручка падает — что делают крупные digital-агентства и при чем здесь AI 22–2…
  2. Aug 18, 2026Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Сегодня посмотрим на чек-…
  3. Aug 13, 2026Hola, Amigos! Сегодня вышли Flutter 3.47 и Dart 3.13. Давайте вместе разберемся, что в них…
  4. Jul 31, 2026Дайджест июля Hola, Amigos! Собрали в одну подборку все полезные посты июля, которые вы мо…
  5. Jul 28, 2026Hola, Amigos! Сегодня посмотрим на один пакет, который может быть полезен в разработке - p…
  6. Jul 24, 2026Hola, Amigos! Сегодня мы вводим новую рубрику - обзоры правил для статического анализатора…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →