首页 > 解决方案 > 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 云

标签: firebasefluttergoogle-cloud-firestorefirebase-security

解决方案


身份验证的结果是 AuthResult,而不是 FirebaseUser。

要将用户传递给您的函数,您应该发送signedInUser.user而不是仅仅发送signedInUser

我建议您仔细阅读文档,因为这会很快变得棘手。

我希望这可以帮助你!

编辑:

我还建议设置您在函数中使用的变量的类型,这样您的 IDE 会在键入时指出错误。

例如你应该改变

storeNewUser(user, context)

进入

storeNewUser(FirebaseUser user, BuildContext context)

推荐阅读