listen抽象方法

StreamSubscription<T> listen(
  1. void onData(
    1. T event
    )?, {
  2. Function? onError,
  3. void onDone()?,
  4. bool? cancelOnError,
})

向此流添加一个订阅。

返回一个StreamSubscription,该订阅使用提供的onDataonErroronDone处理程序来处理此流的事件。可以在订阅中更改处理程序,但它们最初是提供的函数。

对于从该流中每个数据事件,都会调用订阅者的onData处理程序。如果onDatanull,则不会执行任何操作。

对于来自该流的错误,将调用带有错误对象和可能的事务跟踪的onError处理程序。

onError回调必须是类型void Function(Object error)void Function(Object error, StackTrace)。函数类型确定是否使用事务跟踪参数调用onError。如果此流在未提供事务跟踪的情况下收到错误,则事务跟踪参数可能为StackTrace.empty

否则,它仅带有错误对象调用。如果省略了onError,则此流上的任何错误都视为未处理的,并将传递到当前Zone的错误处理程序。默认情况下,未处理的异步错误被视为未捕获的顶层错误。

如果此流关闭并发送一个完成事件,将调用onDone处理程序。如果onDonenull,则不会执行任何操作。

如果cancelOnErrortrue,则在传递第一个错误事件时将自动取消订阅。默认值为false

在订阅暂停或已取消订阅时,订阅不会接收到事件,并且不会调用任何事件处理程序函数。

实现

StreamSubscription<T> listen(void onData(T event)?,
    {Function? onError, void onDone()?, bool? cancelOnError});