Комментарии 5
А если в приложении 100+ экранов и при навигации на все (кроме парочки, касающихся авторизации) нужна проверка через AuthGuard, нужно вручную для всех ста роутов прописывать параметр guards? Или есть какой-то способ задания AuthGuard без ручного прокидывания в каждый роут?
Нашёл в доке, как сделать глобальную обработку
@AutoRouterConfig()
class AppRouter extends $AppRouter implements AutoRouteGuard {
@override
void onNavigation(NavigationResolver resolver, StackRouter router) {
if(isAuthenticated || resolver.route.name == LoginRoute.name){
resolver.next();
}else{
resolver.redirect(LoginRoute(onResult:(didLogin)=> resolver.next(didLogin)))
}
}
}
Можно добавить Guard в главный маршрут. Тогда при запуске приложения вы автоматически перейдете на экран аутентификации если не авторизованы.
А почему рекомендуете go_router? Можете поделиться, чем auto_route хуже, какие кейсы не покрывает в ваших проектах или с какими проблемами столкнулись. Мы недавно в компании перешли на Flutter с Xamarin Native, и пока сделали выбор в пользу auto_route.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Управляем навигацией во Flutter с помощью библиотеки auto_route: часть 2. Guards, Wrappers и миграция