当前位置: 首页 > 知识库问答 >
问题:

Flutter:如何设置流和提供程序

微生信鸿
2023-03-14

我正在使用Firebase匿名登录制作一个Flutter应用程序(稍后我将添加其他登录方法)。我想创建流和提供程序,以便如果用户点击“登录”按钮,它会将用户带到Home(),如果用户点击Home()中的“注销”按钮,则会将其带到Login()页面。

我还想为应用程序重新启动执行此操作,例如当用户之前登录时,应将用户直接带到Home()页面而不是Login()。

我对这一切有非常基本的了解。在这里,我跟着扑火医生。https://firebase . flutter . dev/docs/auth/usage/# authentic ation-state在此链接中,他们谈到了Stream和所有内容,但我不明白。

这是我的代码:

主飞镖

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Wrapper(),
    );
  }
}

包装器. dart

class Wrapper extends StatefulWidget {
  @override
  _WrapperState createState() => _WrapperState();
}

class _WrapperState extends State<Wrapper> {
  final FirebaseAuth _auth = FirebaseAuth.instance;
  @override
  Widget build(BuildContext context) {
    _auth.authStateChanges().listen((User user) {
      if (user == null) {
        print('the user is currently signed out');
        return Authenticate();
      } else {
        print('The User is currently signed In');
        return Home();
      }
    });
  }
}

作者服务

import 'package:firebase_auth/firebase_auth.dart';

class AuthenticationService {
  final FirebaseAuth _auth = FirebaseAuth.instance;

  //sign in anonympusly
  Future signinanon() async {
    try {
      UserCredential result = await _auth.signInAnonymously();
      User userdetails = result.user;
      return userdetails;
    } catch (e) {
      print(e.toString());
      return null;
    }
  }
}

共有1个答案

呼延靖
2023-03-14

您在这里有很多选择,但为了简单起见,您可以使用StreamBuilder,并根据需要显示不同的小部件或页面,具体取决于身份验证状态。

AuthStateChange在这里很好,因为我引用:

Firebase Auth使您能够通过Stream实时订阅此状态。调用后,流提供用户当前身份验证状态的即时事件,然后在身份验证状态更改时提供后续事件。

由我强调。

 类似资料:
  • 我在谷歌登录上出现了这个错误。 我确实使用Strapi在Qovery上部署了。 我如何解决这个问题? 重定向uri的参数值无效:不允许原始IP地址:http://0.0.0.0:1337/connect/google/callback

  • 本文向大家介绍vagrant 在Vagrantfile中设置默认提供程序,包括了vagrant 在Vagrantfile中设置默认提供程序的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 1)进入管理审批界面,下面有轻推为您列出的常用审批模板,点击即可创建及修改。如果您需要的审批模板不在下列的常用模板中您也可以选择创建自定义模板,点击“+自定义新模板”按钮即可设置; 2)点击需要设置的模板进行创建(以请假模板为例); 3)在创建模板界面,点击需要修改的内容即可跳转至修改界面; 4)点击“模板字段”按钮设置该模板中的字段信息; 5)在“创建模板”中列出来五项请假流程中常用的字段,如果

  • 问题内容: 如何设置Flutter应用程序的版本名称和版本代码,而不必进入Android和iOS设置? 在我的pubspec.yaml中 但我看不到内部编号的地方。 问题答案: 您可以在 pubspec.yaml 中的同一位置更新版本名称和版本代码号。只需将它们与标志分开即可。例如: 这表示 版本名称是 版本代码是 在新项目的文档中对此进行了描述(但是,如果您正在处理旧项目,则可能已将其删除):