我尝试从 firebase 获取数据并给出此错误 _CastError (空检查运算符用于空值)

发布于 2025-01-10 06:21:00 字数 593 浏览 0 评论 0原文

我尝试从数组字段中获取数据,但出现错误。错误是:

_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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

红ご颜醉 2025-01-17 06:21:00

问题是:

await FirebaseFirestore.instance 
    .collection("TotalKM")
    .doc()

调用不带参数的 doc() 会生成对新的、不存在的文档的引用。然后,您对该引用调用 get(),这会为您提供该不存在文档的快照,因此没有任何数据。然后调用 value.data()! 是一个错误,因为通过使用 ! 你告诉编译器你知道 data( ) 不能为 null,这是错误的。

要最轻松地消除错误,请使用 ? 而不是 !

但更有可能的是,您需要将要加载的文档的文档 ID 传递到对 doc() 的调用中:...doc("idOfDocumentYouWantToLoad").get( )...

The problem is:

await FirebaseFirestore.instance 
    .collection("TotalKM")
    .doc()

Calling doc() without arguments generates a reference to a new, non-existing document. You then call get() on that reference, which gives you a snapshot for that non-existing document, so without any data. Then calling value.data()! is an error, as by using ! you tell the compiler that you know the data() cannot be null, 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()....

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文