我尝试从 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()....