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;
}