toSet 方法

Future<Set<T>> toSet()

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

创建一个 Set<T> 并将此流的所有元素按顺序添加到该集中。当此流结束时,返回的 future 被完成并带上该 set。

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

如果此流发出错误,返回的 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;
}