listen方法

StreamSubscription<SecureSocket> listen(
  1. void onData(
    1. SecureSocket socket
    )?, {
  2. Function? onError,
  3. void onDone()?,
  4. 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<SecureSocket> listen(void onData(SecureSocket socket)?,
    {Function? onError, void onDone()?, bool? cancelOnError}) {
  return _socket.map((rawSocket) => new SecureSocket._(rawSocket)).listen(
      onData,
      onError: onError,
      onDone: onDone,
      cancelOnError: cancelOnError);
}