【问题标题】:How to create a Dart Stream from a JavaScript listener如何从 JavaScript 监听器创建 Dart Stream
【发布时间】:2013-12-23 00:25:25
【问题描述】:

我想创建一个 Stream,它应该包含与以下代码中的回调相同的元素:

chromeTabs['onUpdated'].callMethod('addListener', 
    [(tabId, changeInfo, tab) => print("tabId = $tabId")]);

我阅读了 Chris Buckett 的教程/文章,但不确定是否可以在第一个 Consumer 到来时创建 Stream 元素。在上面的代码中,这意味着当 Dart Stream 被监听时注册 javascript 监听器。

由于在初始化之前引用了 updateStreamController,以下代码无法运行:

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

很遗憾,onListen 属性只能通过构造函数设置。

提前感谢您的帮助

【问题讨论】:

    标签: dart dart-async


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 2022-07-09
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 2016-02-12
      • 2020-12-30
      相关资源
      最近更新 更多