我想知道什么我创建一个这样的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的构造所有的回调被触发。
是否有此行为的解释?
干杯!
你不应该加括号()
class {
StreamController _controller =
new StreamController(onListen: _onListen, onPause: _onPause,
onResume: _onResume, onCancel: _onCancel);
Stream get stream => _controller.stream;
}
通过这种方式表达你传递作为参数来onListen
, onPause
,......是一个方法/函数的引用。 当您添加的父母表达的是一个方法/函数调用,实际参数onListen
, onPause
......是表达式的返回值。
另外,您可以把它这样(我被省略参数,因为我想节省时间looke起来)
class {
StreamController _controller =
new StreamController(onListen: () => _onListen(), onPause: () => _onPause(),
onResume: () => _onResume(), onCancel: () => _onCancel());
Stream get stream => _controller.stream;
}