Firebase 等待未来中的溪流:飘动

Firebase 等待未来中的溪流:飘动,firebase,flutter,firebase-realtime-database,Firebase,Flutter,Firebase Realtime Database,我想检查Firebase DB是否已连接,因此我必须使用Future返回布尔值 检查一下我的密码 @override Future<bool> isAvailable() async { bool ret = false; await firebaseInstance.reference().child('.info/connected').onValue.listen((event) { ret = event.snapshot.value; }); return re

我想检查Firebase DB是否已连接,因此我必须使用Future返回布尔值

检查一下我的密码

@override
Future<bool> isAvailable() async {
 bool ret = false;
 await firebaseInstance.reference().child('.info/connected').onValue.listen((event) {
  ret =  event.snapshot.value;
});

return ret;
}
FirebaseInstance.reference是一种StreamSubscription类型,不会等待将来返回结果


请提供帮助。

您可以将StreamSubcription放入变量中

StreamSubscription subscription = someDOMElement.onSubmit.listen((data) {

   // you code here

   if (someCondition == true) {
     subscription.cancel();
   }
})


更多信息可在此处找到

您可以将StreamSubcription放入变量中

StreamSubscription subscription = someDOMElement.onSubmit.listen((data) {

   // you code here

   if (someCondition == true) {
     subscription.cancel();
   }
})


更多信息可在此处找到

您可以执行以下操作:

@override
  Future<bool> isAvailable() async {
    bool ret = false;
    Stream<Event> events =
        FirebaseDatabase.instance.reference().child('.info/connected').onValue;
    await for (var value in events) {
      ret = value.snapshot.value;
    }
    return ret;
  }

onValue返回一个流,然后您可以使用wait for在流中迭代并获取数据,然后它将返回。

您可以执行以下操作:

@override
  Future<bool> isAvailable() async {
    bool ret = false;
    Stream<Event> events =
        FirebaseDatabase.instance.reference().child('.info/connected').onValue;
    await for (var value in events) {
      ret = value.snapshot.value;
    }
    return ret;
  }

onValue返回一个流,然后您可以使用wait for在流中迭代并获取数据,然后它将返回。

与其等待流订阅的结束,不如使用第一个值:

@凌驾 Future isAvailable=>firebaseInstance.reference.child'.info/connected'.onValue.first;
与其等待流订阅的结束,它永远不会结束,只需获取第一个值:

@凌驾 Future isAvailable=>firebaseInstance.reference.child'.info/connected'.onValue.first;
如果您只需要知道当前值,请使用而不是onValue.listen


如果您只需要知道当前值,请使用而不是onValue.listen


你试过我的答案吗?你试过我的答案吗?你救了我!谢谢你救了我!非常感谢。