繁体   English   中英

Flutter“NoSuchMethodError(NoSuchMethodError:在 null 上调用了方法‘where’。

[英]Flutter "NoSuchMethodError (NoSuchMethodError: The method 'where' was called on null." Error

我写了这样的代码:

List ProductsList;
//...
void initState() {
  super.initState();
  _firestore.collection("Products").snapshots().listen((event) {
    setState(() {
      ProductsList = event.docs;
    });
  });
}
//...
StreamBuilder(
  stream: ProductsList.where((x) => x["Name"] == SearchText).toList().first, // Filter
  builder: (BuildContext context, snapshot) {
    if (snapshot.hasData) {
      return ListView.builder(
        itemCount: snapshot.data.docs.length,
        itemBuilder: (context, index) {
          return Card(
            child: ListTile(
              title: Text(snapshot.data.docs[index].data()["Name"]),
            ),
          );
        },
      );
    } else {
      return Text("No data");
    }
  }
),

我的目标是从列表中的 Arrays 中获取Name值。 但是当我运行代码时,我收到如下错误:

在此处输入图像描述

我对其进行了测试,结果在列表中。 我该如何解决这个问题? 感谢帮助。

您的 ProductsList 变量已声明,但未定义。 您在 initState 的侦听器中设置 ProductList,但只有在您的 Products Collection 中进行更改时才会设置它。 这就是它不能调用ProductList上的.where的原因,因为它在initState之后是null。

您要么给 ProductsList 一个默认值

List ProductList = [];

或者您将 stream 传递到 StreamBuilder 并在构建器中更改您的逻辑

StreamBuilder(
  stream: _firestore.collection("Products").snapshots(),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM