listen 方法

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

    为此流添加一个订阅。

    返回一个 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 value)?,
        {Function? onError, void onDone()?, bool? cancelOnError}) {
      return _stream.listen(onData,
          onError: onError, onDone: onDone, cancelOnError: cancelOnError);
    }