相关疑难解决方法(0)

如何将 flutter_bloc 与 go_router 一起使用

我构建了一个使用 flutter_bloc 的应用程序。我想使用 go_router 进行导航。但是对于动态路由,我如何将 GoRouter refreshListener 参数与 flutter_bloc 一起使用

GoRouter(
  routes: [
    GoRoute(
      path: '/',
      name: 'home',
      pageBuilder: (context, state) => HomePage.page(),
    ),
    GoRoute(
      path: '/login',
      name: 'login',
      pageBuilder: (context, state) => LoginPage.page(),
    ),
  ],
  redirect: (state) {
    final isLoggedIn =
        bloc.state.status == AuthenticationStatus.authenticated;
    final isLoggingIn = state.location == '/login';

    if (!isLoggingIn && !isLoggingIn) return '/login';
    if (isLoggedIn && isLoggingIn) return "/";

    return null;
  },
  refreshListenable: 
   );
Run Code Online (Sandbox Code Playgroud)

flutter flutter-navigation flutter-bloc

10
推荐指数
3
解决办法
2万
查看次数

当已经在路由上时,如何使用 go_router 和 Firebase 身份验证处理 Flutter 中的身份验证?

在我的 Flutter 应用程序中,我使用该go_router包来管理路由和Firebase Authentication用户身份验证。我有几个屏幕需要用户经过身份验证才能访问,例如帐户管理、交易和详细信息。

目前,我已经实现了重定向,go_router以确保未经身份验证的用户被正确重定向。但是,当用户已经位于这些屏幕之一并注销或会话过期时,我面临着挑战。

我正在考虑使用 BlocListener 来检测每个屏幕上身份验证状态的变化,但这似乎会导致代码重复。由于 Firebase 身份验证,我还有一个 Stream 通知身份验证状态的更改,并更新变量contex.isUserSignIn

使用 go_router 和 Firebase 身份验证有效处理 Flutter 中的注销或会话过期事件的最佳实践是什么?

firebase-authentication flutter gorouter flutter-navigation flutter-go-router

8
推荐指数
1
解决办法
2293
查看次数

如何使用 GoRouter 正确重定向到路由?

我怎样才能正确重定向到路线?

\n

我的应用程序必须具有一定的路由安全性,我尝试使用 GoRouter\n 来做到这一点,但它总是执行一次重定向并总是返回到主页。

\n

只有 3 条安全路径(个人资料、订单、收藏夹),如果您尚未登录,则必须返回登录。

\n

但是当我将 3 个路由中的任何一个放入 url 时,它会将我重定向到登录名并立即到主页(这是不应该发生的情况)

\n

有人可以帮助我吗?\n我多次改变了逻辑,但我总是回到同一点。

\n
class AppRouter {\n  final SessionCubit sessionCubit;\n\n  GoRouter get router => _goRouter;\n\n  AppRouter(this.sessionCubit);\n\n  late final GoRouter _goRouter = GoRouter(\n    refreshListenable: GoRouterRefreshStream(sessionCubit.stream),\n    initialLocation: APP_PAGE.home.toPath,\n    routes: <GoRoute>[\n      GoRoute(\n        path: APP_PAGE.home.toPath,\n        name: APP_PAGE.home.toName,\n        builder: (context, state) => MyHomePage(),\n      ),\n      GoRoute(\n        path: APP_PAGE.login.toPath,\n        name: APP_PAGE.login.toName,\n        builder: (context, state) => const LoginPage(),\n      ),\n      GoRoute(\n        path: APP_PAGE.profile.toPath,\n        name: APP_PAGE.profile.toName,\n        builder: (context, state) => MyProfile(),\n      ),\n      GoRoute(\n        path: APP_PAGE.page1.toPath,\n        name: …
Run Code Online (Sandbox Code Playgroud)

session redirect dart flutter flutter-go-router

6
推荐指数
1
解决办法
2万
查看次数