toSet 方法

Future<Set<T>> toSet()

将此 Stream 的数据收集到一个 Set 中。

创建一个 Set<T> 并将此 Stream 的所有元素按接收顺序添加到集合中。当此 Stream 结束时,返回的 Future 完成,带有那个集合。

返回的集合类型与使用 <T>{} 创建的类型相同。如果需要另一种类型的集合,可以使用 forEach 将每个元素添加到集合中,或者使用 toList().then((list) => new SomeOtherSet.from(list)) 创建集合。

如果此 Stream 发出错误,返回的 Future 完成该错误,并停止处理。

实现

Future<Set<T>> toSet() {
  Set<T> result = new Set<T>();
  _Future<Set<T>> future = new _Future<Set<T>>();
  this.listen(
      (T data) {
        result.add(data);
      },
      onError: future._completeError,
      onDone: () {
        future._complete(result);
      },
      cancelOnError: true);
  return future;
}