我需要在Flutter上实现一个ListView,并且我要传递snapshot.data.length作为itemCount的参数:
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(
snapshot.data[index].data["Identificacao"],...
然后我得到一个错误:
I/flutter ( 4647): Class 'List<DocumentSnapshot>' has no instance getter 'length'.
I/flutter ( 4647): Receiver: Instance(length:1) of '_GrowableList'
I/flutter ( 4647): Tried calling: length
但是我见过的许多教程都使用了这些sintax。我曾尝试使用:
snapshot.data.documents.length;
,但结果相同。请帮帮我!
答案 0 :(得分:3)
如果您正在使用StreamBuilder,则查找数据长度的方法并非如此。
snapshot.data.length
由于您询问快照实例的长度而无法正常工作,因此您将出现无此方法或无此类错误
所以你应该做的。
snapshot.data.snapshot.value.length
让我给你看一个例子
StreamBuilder(
stream: FirebaseDatabase.instance
.reference()
.child("users")
.orderByChild('firstName')
.limitToFirst(20)
.onValue,
builder: (context, snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data.snapshot.value.lenght,//Here you can see that I will get the count of my data
itemBuilder: (context, int) {
//perform the task you want to do here
return Text("Item count ${int}");
});
} else {
return Container();
}
},
),
您还可以查看关于stream和futurbuilder https://stackoverflow.com/a/50844913/9949983
有什么区别的答案答案 1 :(得分:1)
通过替换解决了问题
StreamBuilder<Object>
与
StreamBuilder<QuerySnapshot>
默认情况下,StreamBuilder 以这种形式出现 StreamBuilder
这将 100% 有效
答案 2 :(得分:0)
我用它来映射和递增以获取快照的长度:
int snapshotLength = 0;
snapshot.data.documents.map<YourGenericType>((document){
snapshotLength++;
print("Snapshot length: $snapshotLength");
}
答案 3 :(得分:0)
在flutter中使用StreamBuilder小部件。
StreamBuilder(
stream: Firestore.instance
.collection('followers')
.document(<DocID>)
.collection('<COLLECTION>')
.snapshots(),
builder: (context, snapshot) {
QuerySnapshot values = snapshot.data;
print(values.length);
},
);
答案 4 :(得分:0)
仅尝试:
snapshot.data.documents.length
不建议在vscode ide dart插件中使用,但可以使用。
答案 5 :(得分:-1)
也许是snapshot.documents.length
吗?