![](/img/trans.png)
[英]fetcing data error :Unhandled Exception: NoSuchMethodError: The method '[]' was called on null
[英]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.