我想创建一个Stream,它应该包含与以下代码中的回调相同的元素:
chromeTabs['onUpdated'].callMethod('addListener',
[(tabId, changeInfo, tab) => print("tabId = $tabId")]);
我阅读了Chris Buckett的教程/文章,并且不确定是否有可能在第一个消费者到来时创建一个Stream元素。在上面的代码中,它意味着在Dart Stream被收听时注册javascript监听器。
以下代码由于在初始化之前引用 updateStreamController 而无法工作:
var updateStreamController = new StreamController<int>(onListen: () =>
chromeTabs['onUpdated'].callMethod('addListener', [(tabId, changeInfo, tab) =>
updateStreamController.add(tabId)]);`
不幸的是, onListen 属性只能通过构造函数设置。
提前感谢您的帮助
答案 0 :(得分:1)
您可以在初始化之前简单地声明变量:
var updateStreamController;
updateStreamController = new StreamController<int>(onListen: () =>
chromeTabs['onUpdated'].callMethod('addListener',
[(tabId, changeInfo, tab) => updateStreamController.add(tabId)]));