gpt4 book ai didi

firebase - 更改 Firebase 实时数据库中的值时如何查看 flutter 应用程序的更改?

转载 作者:行者123 更新时间:2023-12-03 15:48:33 26 4
gpt4 key购买 nike

enter image description here
每当我在 Firebase 实时数据库中进行任何更改时,我都会尝试使这些滚动开关更改其值。
更具体地说,每当我将 Relay1/Data 的值更改为 0 时,我都希望该开关变为非事件状态。
我已经尝试并四处寻找,但找不到任何解决方案。

  bool relay1pressed;
final databaseReferenceTest = FirebaseDatabase.instance.reference();



@override
void initState() {
super.initState();

databaseReferenceTest
.child('MedicalCenter')
.once()
.then((DataSnapshot snapshot) {
String value = snapshot.value['Relay1']['Data'];
print('Value is $value');
if (value == '1') {
relay1pressed = true;
} else
relay1pressed = false;

setState(() {
isLoading = true;
});
});
}


//Widget build

StreamBuilder(
stream: databaseReferenceTest
.child('MedicalCenter')
.child('Relay1')
.onValue,
builder: (BuildContext context, AsyncSnapshot<Event> snapshot) {
databaseReferenceTest
.child('MedicalCenter')
.once()
.then((DataSnapshot snapshot) {
String value = snapshot.value['Relay1']['Data'];
print('Value is $value');
if (value == '1') {
relay1pressed = true;
print('relay1 bool $relay2pressed');
} else {
relay1pressed = false;
print('relay1 bool $relay2pressed');
}
});

return LiteRollingSwitch(
value: relay1pressed,
textOn: 'active',
textOff: 'inactive',
colorOn: Colors.deepOrange,
colorOff: Colors.blueGrey,
iconOn: Icons.lightbulb_outline,
iconOff: Icons.power_settings_new,
onChanged: (bool state) {
state
? databaseReferenceTest
.child('MedicalCenter')
.update({'Relay1/Data': '1'})
: databaseReferenceTest
.child('MedicalCenter')
.update({'Relay1/Data': '0'});

最佳答案

您目前正在使用 once()从数据库中获取值,这意味着它只读取当前值。如果您想继续监控该值,您需要使用 onValue反而。

databaseReferenceTest
.child('MedicalCenter')
.onValue.listen((event) {
var snapshot = event.snapshot

String value = snapshot.value['Relay1']['Data'];
print('Value is $value');

...

});

关于firebase - 更改 Firebase 实时数据库中的值时如何查看 flutter 应用程序的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60942014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com