Firebase 尝试使用.createUserWithEmailAndPassword时,未为类“AuthResult”定义获取程序“uid”

Firebase 尝试使用.createUserWithEmailAndPassword时,未为类“AuthResult”定义获取程序“uid”,firebase,flutter,dart,firebase-authentication,Firebase,Flutter,Dart,Firebase Authentication,我是应用程序开发的新手,我的代码中有一个错误 进口“包装:颤振/材料.省道”; 导入“包:firebase_auth/firebase_auth.dart”; 导入“包:cloud_firestore/cloud_firestore.dart”; 导入“main.dart”; void main=>runAppSignup; //无状态:无法在运行时更改 //只能叫一次 类注册扩展了无状态小部件{ @凌驾 小部件构建上下文上下文{ 返回材料PP debugShowCheckedModeBann

我是应用程序开发的新手,我的代码中有一个错误

进口“包装:颤振/材料.省道”; 导入“包:firebase_auth/firebase_auth.dart”; 导入“包:cloud_firestore/cloud_firestore.dart”; 导入“main.dart”; void main=>runAppSignup; //无状态:无法在运行时更改 //只能叫一次 类注册扩展了无状态小部件{ @凌驾 小部件构建上下文上下文{ 返回材料PP debugShowCheckedModeBanner:false, 主题:主题数据 原色:颜色。粉红色, , 首页:签名:“注册!”, ; } } 类注册扩展了StatefulWidget{ 注册{Key Key,this.title,this.uid}:superkey:Key; 最后的字符串标题; 最后一个字符串uid; @凌驾 _SignUpState createState=>\u SignUpState; } 类_SignUpState扩展状态{ TextStyle=TextStylefontFamily:“蒙特塞拉特”,fontSize:20.0; TextEditingController first_entry=新建TextEditingController; TextEditingController最后一项=新建TextEditingController; TextEditingController电子邮件\ u条目=新建TextEditingController; TextEditingController密码\u entry=新建TextEditingController; PersistentBottomSheetController\u sheetController; bool\u加载=假; @凌驾 小部件构建上下文上下文{ final FirstName=TextFormField 控制器:第一个输入, 验证器:值{ ifvalue.isEmpty{ 返回“请输入您的名字”; } 返回null; }, 模糊文本:false, 风格:风格, 装饰:输入装饰 labelText:名字, contentPadding:EdgeInsets.来自LTRB20.0、15.0、20.0、15.0、, 边界: 大纲输入边界边界半径:边界半径。圆形32.0, ; final LastName=TextFormField 控制器:最后一个输入, 验证器:值{ ifvalue.isEmpty{ 返回“请输入您的姓氏”; } 返回null; }, 风格:风格, 装饰:输入装饰 labelText:姓, contentPadding:EdgeInsets.来自LTRB20.0、15.0、20.0、15.0、, 边界: 大纲输入边界边界半径:边界半径。圆形32.0, ; 最终电子邮件=TextFormField 控制器:电子邮件输入, 验证器:值{ ifvalue.isEmpty{ 返回“请输入您的电子邮件”; } 返回null; }, 风格:风格, 装饰:输入装饰 标签文本:电子邮件, contentPadding:EdgeInsets.来自LTRB20.0、15.0、20.0、15.0、, 边界: 大纲输入边界边界半径:边界半径。圆形32.0, ; 最终通过=TextFormField 控制器:密码输入, 蒙昧文字:对, 验证器:值{ ifvalue.isEmpty{ 返回“请输入您的密码”; } 返回null; }, 风格:风格, 装饰:输入装饰 labelText:密码, contentPadding:EdgeInsets.来自LTRB20.0、15.0、20.0、15.0、, 边界: 大纲输入边界边界半径:边界半径。圆形32.0, ; 最终签名P=材料 标高:5.0, 边界半径:边界半径。圆形30.0, 颜色:Color0xff01A0C7, 子:材质按钮 minWidth:MediaQuery.ofcontext.size.width, 填充:从LTRB20.0、15.0、20.0、15.0、, onPressed:async{ printfirst_entry.text; printlast_entry.text; printmail_entry.text; 试一试{ FirebaseAuth.instance .createUserWithEmailAndPassword 电子邮件:email_entry.text, 密码:password\u entry.text .thenauthResult=>Firestore.instance .收集用户 .documentauthResult.user.uid .setData{ uid:authResult.user.uid, fname:first_entry.text, 姓氏:last_entry.text, 电子邮件:email_entry.text, } .thenresult=>{ Navigator.pushandremove直到 上下文 材料路线 builder:context=>MyHomePage 标题: 首次进入 .文本+ 党的任务,, uid:authResult.user.uid, , _=>错误, 第一个入口。清除, 最后一项。清除, email_entry.clear, 密码\u entry.clear, }; 设置状态{}; 导航器。推 上下文 MaterialPackageRouteBuilder:context=>new MyHomePage, ; } 抓住e{ 脉波重复间隔 nt“登录$e时出错”;//调试 } }, 孩子:给我发短信注册!, textAlign:textAlign.center, style:style.copyWith 颜色:Colors.white,fontwweight:fontwweight.bold, , ; 返回脚手架 正文:SingleChildScrollView 儿童:中心 子:容器 颜色:颜色,白色, 孩子:填充 填充:常量边集。全部36.0, 子:列 crossAxisAlignment:crossAxisAlignment.center, mainAxisAlignment:mainAxisAlignment.center, 儿童:[ 大小盒子 身高:235.0, 子:Image.asset 图片/SignUp.png, 适合:BoxFit.contain, , , 名字, 尺寸箱高度:25.0, 姓, 尺寸箱高度:25.0, 电子邮件 尺寸箱高度:25.0, 通过 尺寸箱高度:39.0, 签字, 尺寸箱高度:25.0, ], , , , , , appBar:appBar 标题:Textwidget?标题, , bottomNavigationBar:BottomAppBar 子:容器 身高:45.0, 颜色:颜色。粉红色[100], , , ; } } 对于最近的更新插件更新,登录方法返回AuthResult而不是FirebaseUser,因此您必须从AuthResult获取用户

           FirebaseAuth.instance
               .createUserWithEmailAndPassword(
                  email: email_entry.text,
                  password: password_entry.text)
               .then((authResult) => Firestore.instance
                  .collection("users")
                  .document(authResult.user.uid) //returns auth result so you should get user.uid from auth result
                  .setData({
                    "uid": authResult.user.uid,
                    "fname": first_entry.text,
                    "surname": last_entry.text,
                    "email": email_entry.text,
           })
           .then((result) =>  {
               Navigator.pushAndRemoveUntil(
               context,
               MaterialPageRoute(
                   builder: (context) => MyHomePage(
                     title:
                     first_entry
                         .text +
                         "'s Tasks",
                     uid: authResult.user.uid,
                   )),
                   (_) => false),
               first_entry.clear(),
               last_entry.clear(),
               email_entry.clear(),
               password_entry.clear(),
               }));

哦,哇,很好,谢谢你。我永远不会得到那个!你知道我的代码是否有问题吗?我可以运行它,但当我尝试将名字和姓氏保存到firebase数据库时,它无法保存。如果没有,我随时可以问另一个问题!当然,我编辑了我的问题。我添加了整个注册按钮代码,这是唯一一个在我的主页中加入firebase的代码。我只添加了最后一个字符串uid,这样我就可以在代码中使用uid了。我还添加了一个名条目的示例。其他条目(如电子邮件、密码和姓氏)非常相似。如果您需要更多代码,请告诉我!谢谢您的时间,我已经被困了相当长的一段时间了。完整的可运行代码会很有帮助,但是1。是否已记录并检查控制器是否提供输入值2。如果保存uid,您是否检查了数据库中保存的内容?如果保存了uid,并且只有fname和lname为空,则数据库的屏幕截图会很有用,然后您无法从TextField获得正确的值现在我遇到了一个奇怪的问题,我正试图从TextFormField打印我的值,并添加了printfirst_entry.text;printlast_entry.text;printmail_entry.text;右下方的onPressed:async{然后我在Android Studio的终端上运行了我的代码,我看到它打印正确,当我检查我的数据库时,我的信息保存了!我删除了打印语句,下次输入信息时,它没有保存。我发现它很奇怪,因为我只是打印到终端,而不是保存在任何地方。我还会再次更新我的问题使用代码和屏幕截图,尝试在按下按钮时保存变量中文本字段的值,然后尝试使用断点进行调试并检查值。