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