firebase - 未处理的异常:NoSuchMethodError:在 null 上调用了方法“[]”。访问firestore时
问题描述
我成功地将新用户注册到 firebase,但无法在 firestore 中创建用户的文档。我收到以下错误
[ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: NoSuchMethodError: The method '[]' was called on null.
E/flutter (18812): Receiver: null
E/flutter (18812): Tried calling: []("uid")
E/flutter (18812): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
E/flutter (18812): #1 new UserModel.fromMap (package:hil_app/models/user_model.dart:17:16)
E/flutter (18812): #2 AuthController.streamFirestoreUser.<anonymous closure> (package:hil_app/controllers/auth_controller.dart:66:40)
这是我的控制器类
Stream<UserModel> streamFirestoreUser() {
if (firebaseUser?.value?.uid != null) {
return _db
.doc('/users/${firebaseUser.value.uid}')
.snapshots()
.map((snapshot) => UserModel.fromMap(snapshot.data()));
}
return null;
}
这是我的用户模型
return UserModel(
uid: data['uid'],
name: data['name'] ?? '',
email: data['email'] ?? '',
password: data['password'] ?? '',
dob: data['dob'] ?? '',
gender: data['gender'] ?? '',
phone: data['phone'] ?? '',
agree: data['accept_terms'] ?? '',
photoUrl: data['photoUrl'] ?? '',
);
}
关于如何解决这个错误的任何想法?
解决方案
看起来文档不存在,所以data()
调用失败:
UserModel.fromMap(snapshot.data())
解决此问题的一种简单方法是在快照不存在时传递一个空映射:
UserModel.fromMap(snapshot.exists ? snapshot.data() : {})
推荐阅读
- jenkins - 从 Jenkins 到 Jfrog Docker Registry 的 DockerPush 失败
- python - 每次我启动 VS Code 时,“Linter pylint 没有安装”
- java - Java如何获取特定行及其编号
- xml - docbook 中没有分页符
- java - 是否可以在 Windows 上向 NGINX 添加模块?
- soapui - 在 SoapUI 中提交时间戳和字符串值
- java - JavaFX/FXML:TableView 在编辑项目的情况下正确刷新,但在删除项目的情况下(ArrayList->TableView)
- amazon-web-services - 将文件夹结构从一个存储桶复制到另一个存储桶,而不复制实际数据
- java - 如果我的应用目标 sdk 版本为 30,它如何在具有较低 sdk 的手机中工作
- android - Android Studio 耳机控制按钮点击事件错误