【问题标题】:Firebase Authentication "A value of type 'AuthResult' can't be assigned to a variable of type 'FirebaseUser'"Firebase 身份验证“无法将‘AuthResult’类型的值分配给‘FirebaseUser’类型的变量”
【发布时间】:2020-02-19 10:05:13
【问题描述】:

有一个关于 Flutter 和 Firebase 身份验证的教程系列。当我克隆项目并运行时,在 auth.dart 和 login_page.dart 中删除了以下错误。请问我该如何解决这个问题?

“AuthResult”类型的值不能分配给“FirebaseUser”类型的变量

代码如下:

 class Auth implements BaseAuth {
  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;
  }
  Future<String> createUser(String email, String password) async {
    FirebaseUser user = await _firebaseAuth.createUserWithEmailAndPassword(email: email, password: password);
    return user.uid;
  }

并且没有为类“BaseAuth”定义登录方法“signInWithEmailAndPassword”中的错误。 代码如下:

 Future<void> validateAndSubmit() async {
    if (validateAndSave()) {
      try {
        final BaseAuth auth = AuthProvider.of(context).auth;
        if (_formType == FormType.login) {
          final String userId = await auth.signInWithEmailAndPassword(_email, _password);
          print('Signed in: $userId');
        } else {
          final String userId = await auth.createUserWithEmailAndPassword(_email, _password);
          print('Registered user: $userId');
        }
        widget.onSignedIn();
      } catch (e) {
        print('Error: $e');
      }
    }
  }

【问题讨论】:

    标签: firebase-authentication


    【解决方案1】:

    最近对包 firebase_auth 进行了更新,现在这些方法返回 Future&lt;AuthResult&gt;。如果你想要你的FirebaseUser,你需要得到AuthResult.user。 像这样的东西应该适合你:

    FirebaseUser user = (await _firebaseAuth.signInWithEmailAndPassword(email: email, password: password)).user;
    

    【讨论】:

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