我正在尝试从 Firestore 云中检索变量的值。通过实现代码,我似乎遇到了一个错误,我花了几个小时为此感到沮丧?,试图在这里和其他地方找到解决方案。我在代码旁边遇到的错误如下所示。
在构建 StreamBuilder(dirty, state:_StreamBuilderBaseState
Error Displayed on the Virtual Device
我正在使用的代码:
Widget buildStreamBuilder() {
return Container(
child: !_success
? Center(
child: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.green),
),
)
: StreamBuilder(
stream: FirebaseFirestore.instance.collection('sensors').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.red),
),
);
} else {
snapshot.data.documents.forEach((doc) {
if (doc.documentID == 'cSBKpiEe1XKmQC8BDzMk') {
print('current value = ${doc['BatStat']}'); //var1
globalCurrentSensorValue = doc['BatStat'].toDouble();
}
});
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
flex: 1,
child: Container(),
),
Expanded(
flex: 1,
child: Container(),
)
],
),
);
}
},
));
}
答案 0 :(得分:5)
改变这个:
snapshot.data.documents.forEach((doc)
进入这个:
snapshot.data.docs.forEach((doc)
QuerySnapshot
类包含一个名为 docs
的属性,它将返回集合中的所有文档。
答案 1 :(得分:0)
如果我没记错的话,您是在错误地访问文档数据。 试试这个:
if (doc.documentID == 'cSBKpiEe1XKmQC8BDzMk') {
//use doc.data()[' '] method
print('current value = ${doc.data()['BatStat']}'); //var1
globalCurrentSensorValue = doc.data()['BatStat'].toDouble();
}