listen方法

StreamSubscription<SecureSocket> listen(
  1. void onData(
    1. SecureSocket socket
    )?,
  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<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);
    }