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