如何从JavaScript侦听器创建Dart流

时间:2013-12-23 00:25:25

标签: dart dart-async

我想创建一个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 属性只能通过构造函数设置。

提前感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您可以在初始化之前简单地声明变量:

var updateStreamController;
updateStreamController = new StreamController<int>(onListen: () => 
    chromeTabs['onUpdated'].callMethod('addListener', 
        [(tabId, changeInfo, tab) => updateStreamController.add(tabId)]));