我试图在颤动中创建一些图表,我陷于DocumentSnapshot.data中,感觉颤动已更改了命名,但我在任何地方都找不到它。
Widget _buildBody(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance.collection('sales').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return LinearProgressIndicator();
} else {
List<Sales> sales = snapshot.data.docs
.map((documentSnapshot) => Sales.fromMap(DocumentSnapshot.data))
.toList();
return _buildChart(context, sales);
}
},
);
}
答案 0 :(得分:1)
根据FlutterFire API docs类data
的{{1}}成员是一个返回映射的函数;因此需要调用它以在地图中返回快照的数据:
DocumentSnapshot
请注意,我将参数名称更改为 List<Sales> sales = snapshot.data.docs
.map((shapshot) => Sales.fromMap(snapshot.data()))
.toList();
,以提高代码的可读性并避免意外使用类名。
答案 1 :(得分:0)
StreamBuilder(
stream: Firestore.instance
.collection('users')
.document(id)
.collection('chatWith')
.orderBy('timestamp', descending: true)
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(
AppColor.colorCustom),
),
);
} else {
if (snapshot.data.documents.length == 0) {
return Container(
alignment: Alignment.center,
child: Text(
"No Chat History Found",
style: TextStyle(
color: Colors.grey,
fontWeight: FontWeight.normal,
fontSize:
Util.px_23 * SizeConfig.textMultiplier,
fontFamily: 'Roboto',
),
softWrap: true,
),
);
} else {
return ListView.builder(
padding: EdgeInsets.all(
Util.px_10 * SizeConfig.heightMultiplier),
itemBuilder: (context, index) => _listItem(
context, snapshot.data.documents[index]),
itemCount: snapshot.data.documents.length,
);
}
}
},
)
我是这样实现的,以便为我的聊天应用程序检索数据。我认为该代码对您有用。试试吧