我尝试从 firebase 获取数据并给出此错误 _CastError (空检查运算符用于空值)
我尝试从数组字段中获取数据,但出现错误。错误是:
_CastError(对空值使用空检查运算符)
我不知道这段代码中的问题出在哪里。
当我删除此行 List.from(value.data()!['totkm']).forEach((element)
中的空检查运算符(!) 时,VSCode 也给我错误和 VSCode要求我放置一个空检查运算符(!)。
List<int>totkm=[];
getdata() async {
await FirebaseFirestore.instance
.collection("TotalKM")
.doc()
.get()
.then((value) {
setState(() {
List.from(value.data()!['totkm']).forEach((element) {
totkm.add(int.parse(element));
});
});
});
}
I try to fetch data from array field, but I give the error. The error is:
_CastError (Null check operator used on a null value)
I don't know where is the problem in this code.
when I deleted null check operator(!) in this line List.from(value.data()!['totkm']).forEach((element)
, VSCode also give me error and The VSCode asks me to put a null check operator(!).
List<int>totkm=[];
getdata() async {
await FirebaseFirestore.instance
.collection("TotalKM")
.doc()
.get()
.then((value) {
setState(() {
List.from(value.data()!['totkm']).forEach((element) {
totkm.add(int.parse(element));
});
});
});
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题是:
调用不带参数的 doc() 会生成对新的、不存在的文档的引用。然后,您对该引用调用
get()
,这会为您提供该不存在文档的快照,因此没有任何数据。然后调用value.data()!
是一个错误,因为通过使用!
你告诉编译器你知道data( )
不能为null
,这是错误的。要最轻松地消除错误,请使用
?
而不是!
。但更有可能的是,您需要将要加载的文档的文档 ID 传递到对
doc()
的调用中:...doc("idOfDocumentYouWantToLoad").get( )...
。The problem is:
Calling
doc()
without arguments generates a reference to a new, non-existing document. You then callget()
on that reference, which gives you a snapshot for that non-existing document, so without any data. Then callingvalue.data()!
is an error, as by using!
you tell the compiler that you know thedata()
cannot benull
, and that is false.To get rid of the error most easily, use
?
instead of!
.But more likely, you'll need to pass the document ID of the document you want to load into the call to
doc()
:...doc("idOfDocumentYouWantToLoad").get()...
.