Roh*_*ngh 6 mobile-application dart firebase-authentication flutter flutter-dependencies
我最近在我的项目中尝试了 flutter auto_route包进行导航,因为使用用户身份验证处理导航对我来说总是具有挑战性,我总是试图找到一种让我的路径变得简单的方法。因此,在我当前的项目中,我决定使用auto_route因为它提供了一个保护屏幕和身份验证的路由保护,我使用 firebase auth 但问题是没有资源显示我们如何使用auto_route处理 firebase 身份验证,即使官方文档没有不详细提及路由守卫。
由于我是 auto_route 新手并且导航能力较弱,因此很难创建我的解决方案。因此,如果有人使用auto_route进行 firebase 身份验证,那么您能否分享一些代码片段,或者您是否知道任何解释该过程逐步步骤的文章。谢谢
小智 0
是的,目前我在最新的导航项目中使用了 auto_route 包
当您的身份验证成功后,将用户数据存储在配置单元中,并检查配置单元是否包含该密钥,然后导航到下一页,请参阅下面的代码
我做了很多研究,发现这种方式我创建了一个管理导航的调用
import 'package:auto_route/auto_route.dart';
import 'package:sspl_admin/src/global/user_data_util.dart';
import 'package:sspl_admin/src/model/user_modal.dart';
import 'package:sspl_admin/src/utils/hive/hive_utils.dart';
import 'routes.gr.dart';
 @AutoRouterConfig(
   replaceInRouteName: 'Page,Route',
  )
  class AppRouter extends $AppRouter {
    @override
    RouteType get defaultRouteType => const RouteType.material();
    @override
    final List<AutoRoute> routes = [
    AutoRoute(
      path: '/',
      page: MenuBarRoute.page,
      initial: true,
      guards: [AuthGuard()],
    children: [
      AutoRoute(
      path: 'deshboard',
      page: Dashboard.page,
      initial: true,
     ),
     AutoRoute(
     path: 'category',
     page: CategoryRoute.page,
     ),
   ],
 ),
   AutoRoute(
    path: '/login-page',
    page: LoginRoute.page,
  ),
 ];
}
class AuthGuard extends AutoRouteGuard {
  @override
 void onNavigation(NavigationResolver resolver, StackRouter router) 
    async {
     // Check if the user is logged in.
     bool isLoggedIn = HiveUtils.isContainKey(HiveKeys.userData);
     // If the user is logged in, allow the navigation to proceed.
     if (isLoggedIn) {
     final UserDataUtils userDataUtils = UserDataUtils();
     final Map<String, dynamic> data = 
     HiveUtils.get(HiveKeys.userData);
     final UserData loginModel = UserData.fromJson(data);
     userDataUtils.setUserData(loginModel);
     resolver.next(true);
  } else {
  // If the user is not logged in, redirect the user to the 
     login 
     page.router.navigate(const LoginRoute());
 }
}
}
| 归档时间: | 
 | 
| 查看次数: | 539 次 | 
| 最近记录: |