【问题标题】:How to pass a callback function to a StreamController如何将回调函数传递给 StreamController
【发布时间】:2014-11-12 16:53:31
【问题描述】:

我想知道我正在创建这样的 StreamController:

class {
  StreamController _controller = 
      new StreamController(onListen: _onListen(), onPause: _onPause(), 
          onResume: _onResume(), onCancel: _onCancel());

    Stream get stream => _controller.stream;
}

在我调用的另一个类中

var sub = myInstance.stream.listen(null);

我真的很惊讶 StreamController 的构造函数中的所有回调都被触发了。

这种行为有解释吗?

干杯!

【问题讨论】:

    标签: dart dart-async


    【解决方案1】:

    您不应添加括号 ()

    class {
      StreamController _controller = 
          new StreamController(onListen: _onListen, onPause: _onPause, 
              onResume: _onResume, onCancel: _onCancel);
    
        Stream get stream => _controller.stream;
    }
    

    这样,您作为参数传递给onListenonPause...的表达式是对方法/函数的引用。添加父母时,表达式是方法/函数调用,onListenonPause、... 的实际参数是表达式的返回值。

    或者你也可以这样(我省略了参数,因为我想节省时间来查找它们)

    class {
      StreamController _controller = 
          new StreamController(onListen: () => _onListen(), onPause: () => _onPause(), 
              onResume: () => _onResume(), onCancel: () => _onCancel());
    
        Stream get stream => _controller.stream;
    }
    

    【讨论】:

    • ohhhh 我真丢脸...假设是因为我学习了 Dart...无论如何谢谢
    猜你喜欢
    • 2013-06-06
    • 2013-02-07
    • 2022-08-02
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多