Flutter 颤振-使用firebase创建用户的函数

Flutter 颤振-使用firebase创建用户的函数,flutter,firebase-authentication,Flutter,Firebase Authentication,我正在自学颤振,我正在一个小项目中使用firebase。我正处于登录和注册阶段,所以我需要使用一个名为firebase\u auth:^0.20.0+1的插件。 然而,我的代码中出现了一个问题,我不知道是什么导致了它。 当我创建用户时,我在中指示电子邮件和密码。createUserWithEmailAndPassword,如果它工作,它应该返回一个函数来指示创建成功,没有错误日志,因为我没有完成代码并执行此步骤,但是错误出现在我在该函数中使用的语法中,这似乎不符合firebase的语法,我一定是

我正在自学颤振,我正在一个小项目中使用firebase。我正处于登录和注册阶段,所以我需要使用一个名为firebase\u auth:^0.20.0+1的插件。 然而,我的代码中出现了一个问题,我不知道是什么导致了它。 当我创建用户时,我在中指示电子邮件和密码。createUserWithEmailAndPassword,如果它工作,它应该返回一个函数来指示创建成功,没有错误日志,因为我没有完成代码并执行此步骤,但是错误出现在我在该函数中使用的语法中,这似乎不符合firebase的语法,我一定是做错了什么。他说这些行是错误的

import 'package:firebase_auth/firebase_auth.dart';
import 'package:scoped_model/scoped_model.dart';
import 'dart:async';
import 'package:flutter/material.dart';

class UserModel extends Model {
  //usuario atual

  FirebaseAuth _auth = FirebaseAuth.instance;
  FirebaseUser firebaseUser;
  Map<String, dynamic> userData = Map();

  bool isLoading = false;
  void signUp(Map<String, dynamic> userData, String pass, VoidCallback onSucess,
      VoidCallback onFail) {
    isLoading = true;
    notifyListeners();
    _auth
        .createUserWithEmailAndPassword(
            email: userData["email"], password: pass)
        .then((user) async{
      firebaseUser = user;

      onSucess();
      isLoading = false;
      notifyListeners();
    }).catchError((e) {
      onFail();
      isLoading = false;
      notifyListeners();
    });
  }

  void signIn() async {
    isLoading = true;
    notifyListeners();
    await Future.delayed(Duration(seconds: 3));

    isLoading = false;
    notifyListeners();
  }

  void recoverPass() {}

  //bool isLoggedIn() {}
}

class FirebaseUser {}
import'package:firebase_auth/firebase_auth.dart';
导入“package:scoped_model/scoped_model.dart”;
导入“dart:async”;
进口“包装:颤振/材料.省道”;
类UserModel扩展了模型{
//usuario atual
FirebaseAuth _auth=FirebaseAuth.instance;
FirebaseUser FirebaseUser;
Map userData=Map();
bool isLoading=false;
无效注册(映射用户数据、字符串传递、无效回调onsuces、,
作废(失败){
isLoading=true;
notifyListeners();
_认证
.createUserWithEmailAndPassword(
电子邮件:userData[“email”],密码:pass)
.then((用户)异步{
firebaseUser=用户;
onsuces();
isLoading=false;
notifyListeners();
}).catchError((e){
onFail();
isLoading=false;
notifyListeners();
});
}
void sign()异步{
isLoading=true;
notifyListeners();
等待未来。延迟(持续时间(秒:3));
isLoading=false;
notifyListeners();
}
void recoverPass(){}
//bool isLoggedIn(){}
}
类FirebaseUser{}
对的调用将创建一个用户并返回一个
未来的

then
(负责此结果的
未来部分
)中,您将分配给
firebaseUser
变量,该变量定义为
firebaseUser-firebaseUser
。错误消息告诉您
firebaseUser
UserCredential
是不兼容的类型

要从
UserCredential
获取
FirebaseUser
,请使用:

.then((credentials) async{
    firebaseUser = credentials.user;
根据您使用的
firebase\u auth
插件的版本,您可能需要将
firebaseUser
声明为:

User firebaseUser
在最新版本的FlatterFire库中,这是正确的类型,而较旧的版本将其命名为
FirebaseUser


我已经链接了上面的相关参考文档,因为我发现这对解决这些类型的问题最有帮助。我强烈建议您在学习API时保持这些文档处于打开状态。

尽管
。then
可以完成这项工作,但最好使用async并在try-catch块中等待,以避免回调不过,这一变化非常有效。