【问题标题】:How to get the user Email from Firebase with flutter?如何通过颤振从 Firebase 获取用户电子邮件?
【发布时间】:2020-12-04 23:27:11
【问题描述】:

我正在尝试获取用户的电子邮件以将其显示在帐户页面中,这就是我所做的:

getuseremail() async {
    FirebaseAuth _auth = FirebaseAuth.instance;
    String email;
    final user = _auth.currentUser();
  setState() {() {
    email = user.email;
   }}
 }

然后我显示它,但它给我一个错误,它是空的。

【问题讨论】:

  • 确切的错误是什么?是电子邮件为空还是用户为空?
  • 电子邮件为空。
  • 问题将出在你使用这种方法的家里。由于您的电子邮件变量是在方法中本地声明的,因此您无法从外部访问它以在文本视图中显示它。你能提供你完整的小部件代码,然后我可以给出更具体的答案如何解决它。

标签: firebase flutter email dart firebase-authentication


【解决方案1】:

你可以试试这个代码:

  String _email;
  void getUserEmail()  {
    FirebaseAuth.instance.currentUser().then((user) {
      setState(() {
        _email = user.email;
      });
    });
  }

1、currentUser是返回未来

2、_email需要在State上定义一个字段到setState

【讨论】:

    【解决方案2】:

    如果用户当前已登录,那么您必须执行以下操作:

    getuseremail() async {
        FirebaseAuth _auth = FirebaseAuth.instance;
        String email;
        final user = await _auth.currentUser();
      setState() {() {
        email = user.email;
       }}
     }
    

    使用await,因为currentUser() 返回Future<FirebaseUser>,但请确保用户当前已登录,否则您将无法收到电子邮件。

    【讨论】:

      【解决方案3】:

      你可以试试这个吗?

      final user = _auth.currentUser;
      

      或使用:

      final user = _auth.getCurrentUser();
      

      【讨论】:

        猜你喜欢
        • 2019-01-07
        • 2018-11-28
        • 2017-05-30
        • 2019-11-01
        • 1970-01-01
        • 2017-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多