【问题标题】:How to fix A value of type 'AuthResult' can't be assigned to a variable of type 'FirebaseUser'如何修复“AuthResult”类型的值无法分配给“FirebaseUser”类型的变量
【发布时间】:2020-01-10 10:58:36
【问题描述】:

我尝试将表单 firebaseuser 更改为 authresults

import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
abstract class AuthImplementaion {

}
class Auth implements AuthImplementaion {
  final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
  Future<String> SignIn(String _email, String _password) async{
    FirebaseUser user = await _firebaseAuth.signInWithEmailAndPassword(email: _email, password: _password);
    return user.uid;
  }
}

消息:“AuthResult”类型的值无法分配给“FirebaseUser”类型的变量。请尝试更改变量的类型,或将右侧类型转换为“FirebaseUser”

【问题讨论】:

    标签: android firebase flutter firebase-authentication


    【解决方案1】:

    _firebaseAuth.signInWithEmailAndPassword(email: _email, password: _password) 返回一个AuthResult,就像您在错误消息中提到的那样。但是AuthResult 提供了一个user,即FirebaseUser

    所以,你还得打电话给.user

    import 'package:flutter/material.dart';
    import 'package:firebase_auth/firebase_auth.dart';
    abstract class AuthImplementaion {
    
    }
    class Auth implements AuthImplementaion {
      final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
      Future<String> SignIn(String _email, String _password) async{
        FirebaseUser user = (await _firebaseAuth.signInWithEmailAndPassword(email: _email, password: _password)).user;
        return user.uid;
      }
    }
    

    【讨论】:

    • ' 最终 FirebaseAuth _firebaseAuth = FirebaseAuth.instance; Future SignIn(String _email, String _password) async{ FirebaseUser user = (await _firebaseAuth.signInWithEmailAndPassword(email: _email, password: _password)) as FirebaseUser;返回用户.uid; } Future SignUp(String _email, String _password) async{ FirebaseUser user = (await _firebaseAuth.signInWithEmailAndPassword(email: _email, password: _password)) as FirebaseUser;返回用户.uid; }' 如果我从电子邮件和密码中删除 _ 会发生什么
    • 你可以写另一个问题,如果它与你这个问题的问题无关。但是如果你想在这里问,我会告诉你是否需要作为一个新问题来问。
    • 我想编辑相同的代码,然后从电子邮件和密码中删除 _
    • 所以您想添加一种方法从您的 Firebase 身份验证中删除用户?
    • 不,我会问另一个问题,希望我能在那里得到帮助。感谢您的帮助
    【解决方案2】:

    将其分配给 AuthResult 变量,该变量又包含用户,而该用户包含 uid。

    AuthResult authresult 已包含具有 uid 的用户。 而不是返回 user.uid 返回 authResult.user.uid;

    class Auth implements AuthImplementaion {
      final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
      Future<String> SignIn(String _email, String _password) async{
        AuthResult authResult = await _firebaseAuth.signInWithEmailAndPassword(email: _email, password: _password);
        return authResult.user.uid;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-01
      • 2020-02-19
      • 2021-08-28
      • 2019-10-19
      • 2019-03-16
      • 2022-01-03
      • 2022-11-23
      • 2022-01-15
      相关资源
      最近更新 更多