【发布时间】:2020-03-13 00:17:00
【问题描述】:
我设置了一个颤振项目来接收来自 firebase 的湿度传感器数据。我正在将数据上传到 firebase 并尝试在我的应用程序上检索它,但它只会在一段时间后检索数据。此外,在此之前该值为 null。而且,当更改时,应用程序上的数据没有变化。如何获取数据,以便它显示从我启动应用程序的那一刻起的数据,并在 firebase 上的数据更新时更改?这是我的代码。
double moistureData;
@override
bool _isLoading = false;
void initState() {
super.initState();
databaseReference.child('Data').once().then((DataSnapshot snapshot) {
int moisture = snapshot.value['Moisture'];
moistureData = moisture.toDouble();
print(moisture);
setState(() {
if (moistureData != null) {
_isLoading = true;
}
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Moisture'),
),
body: StreamBuilder(
stream: databaseReference.child('Data').child('Moisture').onValue,
builder: (context, snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
} else {
return Center(
child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Text('$moistureData'),
RaisedButton(
child: Text('Refresh'),
onPressed: () {
setState(() {
databaseReference
.child('Data')
.once()
.then((DataSnapshot snapshot) {
int moisture = snapshot.value['Moisture'];
moistureData = moisture.toDouble();
});
});
},
)
],
),
),
);
}
}));
【问题讨论】:
标签: firebase firebase-realtime-database flutter dart