firebase - Firebase用户注册时不保存到数据库
问题描述
单击注册页面时,它不会导航到主页。而且数据库也不会自动创建。尽管在身份验证页面中出现了一个列表。注册正在工作。
//signuppage.dart
onPressed: (){
var createUserWithEmailAndPassword = FirebaseAuth.instance.createUserWithEmailAndPassword(
email: _email,
password: _password);
createUserWithEmailAndPassword.then((signedInUser){
UserManagement().storeNewUser(signedInUser, context);
}).catchError((e){
print(e.toString());
});
},
这是 usermanagement.dart
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/widgets.dart';
class UserManagement {
storeNewUser(user, context) {
Firestore.instance.collection('/users').add({
'email': user.email,
'uid': user.uid
}).then((value) {
Navigator.of(context).pop();
Navigator.of(context).pushReplacementNamed('/homepage');
}).catchError((e) {
print(e);
});
}
}
当应用程序运行时出现此错误
I/flutter ( 1507): NoSuchMethodError: Class 'AuthResult' has no instance getter 'email'.
I/flutter ( 1507): Receiver: Instance of 'AuthResult'
I/flutter ( 1507): Tried calling: email
面临这个问题无法将数据存储到 Firebase 云
解决方案
身份验证的结果是 AuthResult,而不是 FirebaseUser。
要将用户传递给您的函数,您应该发送signedInUser.user
而不是仅仅发送signedInUser
我建议您仔细阅读文档,因为这会很快变得棘手。
我希望这可以帮助你!
编辑:
我还建议设置您在函数中使用的变量的类型,这样您的 IDE 会在键入时指出错误。
例如你应该改变
storeNewUser(user, context)
进入
storeNewUser(FirebaseUser user, BuildContext context)
推荐阅读
- amazon-web-services - 如何设置 RStudio 服务器以在 AWS 上使用 SSL 运行?
- sorting - 按字母顺序排序表
- terraform - Terraform - 在多个帐户中部署
- android - 如何为 Google PlaceAutocomplete 设置语言
- django - 如何使用 request.FILES(django 1.11) 将 csv 文件数据加载到 pandas 中而不在服务器上保存文件
- batch-file - 如何在for循环中批量使用多个find命令?
- android - MPAndroidChart - getChartBitmap 不显示折线图
- javascript - 从 WP API 传递一个值做 Vue href?
- c - 指向结构的指针声明会为其成员分配内存吗?
- sas - proc 报告 sas 中的自定义摘要