我有一个产生CallEvent
对象的流。我想调用此流,但是我对一个特定事件感兴趣,并希望将来使用它。这可能吗?
我想要实现的伪代码:
final Stream<CallEvent> aStreamOfEvents = repo.getEvents();
// However of this stream im only interested in the `ResponseEvent`
final Future<ResponseEvent> response =
aStreamOfEvents.filter((event) { event is ResponseEvent}).toFuture()
这可能吗?如果可以,怎么办?
最佳答案
final response = aStreamOfEvents.firstWhere((e) => e is ResponseEvent);
response
是上面的Future<CallEvent>
,因此,如果您需要Future<ResponseEvent>
,则需要类似以下内容:final response = aStreamOfEvent
.firstWhere((e) => e is ResponseEvent)
.then((e) => e as ResponseEvent);
或者,或者,如果您使用
package:stream_transform
。final response = aStreamOfEvent
.transform(whereType<ResponseEvent>())
.first
如果在没有发出
Stream
的情况下关闭ResponseEvent
,那么在所有这些情况下,将来都会出错。具体的错误将取决于您选择的模式。