gpt4 book ai didi

firebase - Flutter Web 和 Firebase 身份验证 : how to redirect not logged in user in flutter web?

转载 作者:行者123 更新时间:2023-12-04 13:55:15 29 4
gpt4 key购买 nike

我正在使用 Flutter Web 和 Firebase 开发 Web 应用程序。
我必须处理 Firebase 登录。
假设我们有两个屏幕,我想要实现的情况如下:
如果用户未登录:

  • 在登录页面重定向用户

  • 如果用户未登录:
  • 如果他登陆登录页面,将他重定向到主页

  • 我已经实现了一个函数来检查 firebase 中的当前用户并执行以下操作:
    void checkAuthentication() {
    var url = window.location.href;

    var navigationService = locator<NavigationService>();

    var loggedIn = this.isUserLoggedIn();
    if (!loggedIn) {
    navigationService.replaceWith(Routes.login);
    } else {
    if (url.contains("Login")) {
    navigationService.replaceWith(Routes.homepage);
    }
    }
    }
    navigationService 是我从堆叠包 ( https://pub.dev/packages/stacked ) 中获取的服务。
    此解决方案有效,但有两个问题:
  • 这不是这样做的正确方法。我不可能在每个屏幕页面中都调用它
  • 当您被重定向时,您可以看到显示新页面的过渡。

  • 我的问题:
    您将如何在 Flutter Web 中的代码中的一个独特点进行管理?
    有没有更好的方法来实现这一点与我在这里展示的方法不同?

    最佳答案

    如果您有时间,请查看来自 The Net Ninja's 的前几个视频Flutter/Firebase 教程,其中介绍了基本身份验证。我对 Flutter 还很陌生,所以我会尽力解释他是如何做到的,而不会详细说明:
    他有一个文件 wrapper.dart它使用一个自定义的 User 对象,该对象不断地传输身份验证状态。包装器根据身份验证状态决定用户应该导航到哪里。

     Widget build(BuildContext context) {
    final user = Provider.of<User>(context);
    print(user);

    // return either home or authenticate
    if (user == null) {
    return Authenticate();
    } else {
    return Home();
    }
    }
    我在我的项目中使用了这段代码,它运行良好。

    关于firebase - Flutter Web 和 Firebase 身份验证 : how to redirect not logged in user in flutter web?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63802367/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com