![](/img/trans.png)
[英]Flutter Streambuilder stream inconsistent FirebaseFirestore snapshot data
[英]use StreamBuilder with collectionrefrence as snapshot in flutter
我是 flutter 的新手,我正在尝试使用 StreamBuilder 从 firebase 云 Firestore 中检索类别列表到我的StreamBuilder
应用程序中。 我正在使用flutter 2.8.0
和cloud_firestore: ^3.1.7
这是我的 firestore 文档:类别集合这里是我的代码:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:harfanah/shared/loading.dart';
class categoriesMod extends StatefulWidget {
const categoriesMod({ Key? key }) : super(key: key);
@override
_categoriesModState createState() => _categoriesModState();
}
class _categoriesModState extends State<categoriesMod> {
@override
Widget build(BuildContext context) {
return Scaffold (
body: StreamBuilder(
stream: FirebaseFirestore.instance.collection('categories').snapshots(),
builder: (context, snapshot) {
if(!snapshot.hasData) {
return loading();
}
return ListView.builder(
itemCount: ,
itemBuilder: ,
);
},
),
);
}
}
我真的很困惑如何使用ItemCount
和ItemBuilder
。 我发现很多解决方案都说我应该使用这样的东西: itemCount: snapshot.data.documents.length
但它不起作用。 数据甚至没有除这些以外的任何属性:数据属性
您需要指定StreamBuilder
的类型,然后您可以使用 class QuerySnapshot
中可用的属性/方法:
class _categoriesModState extends State<categoriesMod> {
@override
Widget build(BuildContext context) {
return Scaffold (
body: StreamBuilder<QuerySnapshot<Map<String,dynamic>>>(
stream: FirebaseFirestore.instance.collection('categories').snapshots(),
builder: (context, snapshot) {
if(!snapshot.hasData) {
return loading();
}
return ListView.builder(
itemCount: snapshot.data!.docs.length,
itemBuilder: (context,index){
return ListTile(
title: snapshot.data!.docs[index].data()["code"],
leading: snapshot.data!.docs[index].data()["name"],
);
} ,
);
},
),
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.