我想等待布尔真真,然后从future 归来,但我似乎不能让我的future 等待溪流.

Future<bool> ready() {
  return new Future<bool>(() {
    StreamSubscription readySub;
    _readyStream.listen((aBool) {
      if (aBool) {
        return true;
      }
    });
  });
}

推荐答案

您可以使用Stream方法firstWhere来创建在Stream发出true值时解析的future .

Future<bool> whenTrue(Stream<bool> source) {
  return source.firstWhere((bool item) => item);
}

没有流方法的替代实现可以在流上使用await for语法.

Future<bool> whenTrue(Stream<bool> source) async {
  await for (bool value in source) {
    if (value) {
      return value;
    }
  }
  // stream exited without a true value, maybe return an exception.
}

Dart相关问答推荐

根据 Id 比较两个不同的 List

禁用 ListView 滚动

无法在Flutter中为 TabBarView 设置动态高度

我可以动态应用 Dart 的字符串插值吗?

为什么Dart中的 abs() 函数在没有用括号括起来时返回负数?

Flutter:合并两张图片,作为单张图片存储在本地存储中

自定义声音推送通知不起作用

NoSuchMethodError:在 null 上调用了方法validate

如何编辑 Flutter 的 TextFormField 输入和 errorText 之间的间距

有没有办法知道我的Flatter应用程序使用的是哪个Android API版本?

如何在Dart中switch 枚举?

如何使用工厂构造函数扩展抽象类?

dart和下划线

Dart - 如何在每次测试之后或之前运行函数?

Dart 的输出是什么样的?

dart中 library关键字的确切含义

如何在 Dart 中获取文件名?

Null aware函数调用运算符

dart中是否可以有一个私有构造函数?

何时在 Dart 中使用 part/part of 与 import/export?