listen 抽象方法
为此流添加一个订阅。
返回一个 StreamSubscription,它使用提供的 onData
、onError
和 onDone
处理器来处理此流的事件。可以在订阅中更改这些处理器,但它们最初是提供的方法。
对此流的每次数据事件,都会调用订阅者的 onData
处理器。如果 onData
是 null
,则不会发生任何事情。
对此流的错误事件,使用错误对象和可能的堆栈跟踪调用 onError
处理器。
onError
回调和器必须是类型 void Function(Object error)
或 void Function(Object error, StackTrace)
。函数类型决定了是否带有堆栈跟踪参数调用 onError
。如果此流收到了没有堆栈跟踪的错误,堆栈跟踪参数可能是 StackTrace.empty。
否则,只需传递错误对象。如果省略了 onError
,则此流上的任何错误都被视为未处理,并将传递到当前 Zone 的错误处理器。默认情况下,未处理的异步错误类似于未捕获的顶级错误处理。
如果此流关闭并发送完成事件,则调用 onDone
处理器。如果 onDone
是 null
,则不会发生任何事情。
如果 cancelOnError
为 true
,则当第一个错误事件传递时,将自动取消订阅。默认值为 false
。
当订阅暂停或已取消时,订阅不会接收事件,事件处理程序函数也不会被调用。
实现
StreamSubscription<T> listen(void onData(T event)?,
{Function? onError, void onDone()?, bool? cancelOnError});