firebase - Firestore上的空uid尝试使用Flutter和Firebase保存数据

标签 firebase flutter dart google-cloud-firestore firebase-authentication

当用户注册时,我试图保存一些数据,但是我可能没有调用FirebaseUser权限。有什么建议么?

码:

String errorMessage;
  String name;
  String password;
  String email;
  String role;
  bool obscure = true;
  FirebaseUser instructor;

  final FirebaseAuth _auth = FirebaseAuth.instance;

  final db = Firestore.instance;

  void saveData() async {
    await db.collection("instructori")
      .document(instructor.uid)
      .setData(
        {
          'Nume': name,
          'Rol': role,
          'Email': email,
          'Parola': password,
          'UID': instructor.uid
        }
      );
  }


  Future<void> registerUser() async {
    instructor = await _auth
        .createUserWithEmailAndPassword(
      email: email,
      password: password,
    ).then((onValue) {
      saveData();
      Navigator.of(context).pushNamed(ClientiPage.id);
    }).catchError((error) {
      errorMessage = error;
    });



    Navigator.of(context).pushNamed(ClientiPage.id);
  }

用户成功通过了身份验证,但是我看不到数据被保存到Firestore树中。我在控制台中完成了所有工作,因此我假设这是代码。

错误:
E/flutter ( 5527): Tried calling: uid
E/flutter ( 5527): #0      Object.noSuchMethod  (dart:core-patch/object_patch.dart:53:5)
E/flutter ( 5527): #1      _RegisterPageState.saveData 
package:euroswimming_instructori/register_page.dart:29
E/flutter ( 5527): #2      _RegisterPageState.registerUser.<anonymous closure> 
package:euroswimming_instructori/register_page.dart:48
E/flutter ( 5527): #3      _rootRunUnary  (dart:async/zone.dart:1134:38)

最佳答案

.then()返回的是另一个Future<void>,因此instructor被设置为null。您可以像这样在instructor回调中设置.then():

void registerUser() {
  _auth.createUserWithEmailAndPassword(
    email: email,
    password: password,
  ).then((result) {
    instructor = result.user;
    saveData();
    Navigator.of(context).pushNamed(ClientiPage.id);
  }).catchError((error) {
    errorMessage = error;
  });

  Navigator.of(context).pushNamed(ClientiPage.id);
}

关于firebase - Firestore上的空uid尝试使用Flutter和Firebase保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59877934/

相关文章:

ios - Swift3/Firebase 数据库 : How can I get sub key of value?

flutter - 如何在启用 nullsafety 的情况下从 swagger json 生成 dart 客户端?

flutter - Flutter:admob构建成功,但随后崩溃

Flutter 延迟函数调用两次

flutter - Flutter Provider:如何通知模型包含的模型发生了更改?

dart - 如何从DART代码更新聚合物元素属性

dart - 如何在 CustomScrollView 中使用非 sliver 小部件

javascript - 如何从 Firebase 访问项目对象数组

android - 从 firebase 后端到 Android 前端的自动触发事件

firebase - 错误 : hosting:channel:deploy is not a Firebase command