iam*_*ink 6 routes flutter flutter-routes
我正在尝试为我的 AutoTabsScaffold [bottom nav] 添加身份验证防护,但它不起作用,它可以在其他导航页面中工作,但不仅仅在我的登陆页面内 [其中 AutoTabsScaffold| 底部导航位于]我在这里遗漏了什么吗?
使用:auto_route: ^3.2.4 [pub.dev]
类登陆页面
return AutoTabsScaffold(
backgroundColor: Theme
.of(context)
.scaffoldBackgroundColor,
routes: const [
HomeRouter(),
CategoryRouter(),
OrderRouter(),
ProfileRoute(),
],
bottomNavigationBuilder: (_, tabsRouter) {return}
Run Code Online (Sandbox Code Playgroud)
类授权守卫:
class RouteGuard extends AutoRedirectGuard {
final AuthService authService;
RouteGuard(this.authService) {
authService.addListener(() {
if (!authService.authenticated) {
// should be called when the logic effecting this guard changes
// e.g when the user is no longer authenticated
reevaluate();
}
});
}
@override
void onNavigation(NavigationResolver resolver, StackRouter router) {
if (authService.authenticated) return resolver.next();
router.push(
LoginRoute(
onLoginCallback: (_) {
resolver.next();
router.removeLast();
},
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
路由器.dart
@MaterialAutoRouter(
replaceInRouteName: 'Page|Screen,Route',
routes: <AutoRoute>[
AutoRoute(page: OrderPreviewPage),
AutoRoute(page: AddCardPage,),
AutoRoute(page: PaymentPage,),
AutoRoute(page: SplashPage, initial: true),
AutoRoute(page: MyCartPage,),
AutoRoute(page: IntroPage),
AutoRoute(page: RegisterPage),
AutoRoute(page: ProductDetailPage),
AutoRoute(page: ProductListingPage),
AutoRoute(page: CartSummaryPage,),
AutoRoute(page: LoginPage, path: 'login'), //name: 'LoginRoute'
AutoRoute(
initial: true,
page: LandingPage,
path: 'landing',
children: [
AutoRoute(
path: '',
name: 'homeRouter',
page: HomePage,
),
AutoRoute(
path: 'category',
name: 'categoryRouter',
page: CategoryPage,
),
AutoRoute(
path: 'orders',
name: 'orderRouter',
page: OrdersPage,
),
AutoRoute(
path: 'profile',
guards: [RouteGuard], //<------- here registered router guard but not working in Tabscaffold page
page: ProfilePage,
),
// RedirectRoute(path: '*', redirectTo: ''),
],
),
],
)
Run Code Online (Sandbox Code Playgroud)
尝试在底部导航中添加路线防护,但它没有按我的预期工作。我在这里缺少什么?Github 问题
A L*_*ent -1
我有一个类似的结构,对我来说,它的工作原理是在您的着陆案例中的嵌套导航顶部添加防护:
AutoRoute(
initial: true,
page: LandingPage,
guards: [RouteGuard],
path: 'landing',
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2146 次 |
| 最近记录: |