我尝试从 firebase 获取数据并给我这个错误 _CastError(空值检查运算符用于空值)
I try to get data from firebase and give me this error _CastError (Null check operator used on a null value)
我尝试从数组字段中获取数据,但出现错误。错误是:
_CastError (Null check operator used on a null value)
不知道这段代码哪里有问题
当我在 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));
});
});
});
}
问题是:
await FirebaseFirestore.instance
.collection("TotalKM")
.doc()
调用不带参数的 doc()
会生成对新的 non-existing 文档的引用。然后,您对该引用调用 get()
,这将为您提供该 non-existing 文档的快照,因此没有任何数据。然后调用 value.data()!
是一个错误,因为通过使用 !
你告诉编译器你 知道 data()
不能是 null
,那是错误的。
要最轻松地消除错误,请使用 ?
而不是 !
。
但更有可能的是,您需要将要加载的文档的文档 ID 传递到对 doc()
的调用中:...doc("idOfDocumentYouWantToLoad").get()...
.
我尝试从数组字段中获取数据,但出现错误。错误是:
_CastError (Null check operator used on a null value)
不知道这段代码哪里有问题
当我在 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));
});
});
});
}
问题是:
await FirebaseFirestore.instance
.collection("TotalKM")
.doc()
调用不带参数的 doc()
会生成对新的 non-existing 文档的引用。然后,您对该引用调用 get()
,这将为您提供该 non-existing 文档的快照,因此没有任何数据。然后调用 value.data()!
是一个错误,因为通过使用 !
你告诉编译器你 知道 data()
不能是 null
,那是错误的。
要最轻松地消除错误,请使用 ?
而不是 !
。
但更有可能的是,您需要将要加载的文档的文档 ID 传递到对 doc()
的调用中:...doc("idOfDocumentYouWantToLoad").get()...
.