如何从 JavaScript 监听器创建 Dart Stream
Posted
技术标签:
【中文标题】如何从 JavaScript 监听器创建 Dart Stream【英文标题】:How to create a Dart Stream from a JavaScript listener 【发布时间】: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 属性只能通过构造函数设置。
提前感谢您的帮助
【问题讨论】:
【参考方案1】:您可以在初始化之前简单地声明变量:
var updateStreamController;
updateStreamController = new StreamController<int>(onListen: () =>
chromeTabs['onUpdated'].callMethod('addListener',
[(tabId, changeInfo, tab) => updateStreamController.add(tabId)]));
【讨论】:
以上是关于如何从 JavaScript 监听器创建 Dart Stream的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Dart 2 中限制 TextEditingController 侦听器事件 - Flutter
如何在Dart 2中限制TextEditingController侦听器事件 - Flutter