Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 错误:属性';uid';无法在';用户?';因为它可能是空的_Firebase_Flutter_Firebase Authentication - Fatal编程技术网

Firebase 错误:属性';uid';无法在';用户?';因为它可能是空的

Firebase 错误:属性';uid';无法在';用户?';因为它可能是空的,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,大家好,我是Flatter和firebase的新手,我尝试做的是简单地注册新用户,然后使用自定义id将其信息添加到cloud firestore,并添加子集合名称“通知” 下面是代码示例 final _auth = FirebaseAuth.instance; final _ref = FirebaseFirestore.instance; final userCollections = FirebaseFirestore.instance.collection("users&

大家好,我是Flatter和firebase的新手,我尝试做的是简单地注册新用户,然后使用自定义id将其信息添加到cloud firestore,并添加子集合名称“通知” 下面是代码示例

final _auth = FirebaseAuth.instance;
  final _ref = FirebaseFirestore.instance;
  final userCollections = FirebaseFirestore.instance.collection("users");
  Future<void> SignupToColud(
      {@required String name = "",
      @required String email = "",
      @required String pass = ""}) async {
    try {
      await _auth
          .createUserWithEmailAndPassword(email: email, password: pass)
          .then((value) {
        String userId = value.user.uid;
        if (userId != null) {
          userCollections.doc(userId).set({'name': name, 'email': email});
          userCollections
              .doc(userId)
              .collection("notifications")
              .add({'txt': 'welcome you registered as new user succefully'});
        } else {
          throw Error();
        }
      });
      // first sign up to cloud if success

      //then add to users collections
    } catch (e) {
      print(e.toString());
    }
  }
这是pubspec.yaml文件信息 环境:
sdk:“>=2.12.0错误来自此行:

String userId = value.user.uid;
正如错误所说的
值。user
用户?
,这意味着它可以是
user
对象,也可以是
null
。您的代码需要处理is可以为null的事实,因为只有您可以决定在这种情况下该怎么做

我想你想要的是:

  _auth
      .createUserWithEmailAndPassword(email: email, password: pass)
      .then((value) {
    if (value.user != null) {
      String userId = value.user!.uid;
      userCollections.doc(userId).set({'name': name, 'email': email});

因此,这将检查
value.user
是否为空(而不是检查
用户ID
。如果
value.user
不为空,则
uid
保证有一个值,因此我们可以在写入操作中使用该值。

谢谢,它很有效!这个语法对我来说是新的字符串userId=value.user!.uid;我的意思是value.user!.uid,不添加!标记不起作用我得到了错误。)r
强制Dart将可选的
字符串
展开为
字符串
。如果您不熟悉Dart中的空安全设置,我建议您阅读和。同时:如果我的答案有用,请单击向上投票按钮(▲) 在它的左边(您可能还没有足够的声誉)。如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就会知道你已经得到了(足够的)帮助。也请参见
String userId = value.user.uid;
  _auth
      .createUserWithEmailAndPassword(email: email, password: pass)
      .then((value) {
    if (value.user != null) {
      String userId = value.user!.uid;
      userCollections.doc(userId).set({'name': name, 'email': email});