您如何将此功能从Javascript转换为Dart?
function addEvtListener(Element el, evtName, fn) {
return el.addEventListener ? el.addEventListener(evtName, fn, false) : el.attachEvent('on' + evtName, fn);
}
主要问题是事件名称是动态的。我显然可以致电:
el.onClick.listen((event) => fn(event));
如果evtName
是点击事件。但在Dart中有这样的方法吗?
el.on("click").listen(event) => fn(event));
答案 0 :(得分:3)
Events类文档概述了按名称监听事件的不同方法:http://api.dartlang.org/docs/releases/latest/dart_html/Events.html
你会发现你可以做到这两点:
new EventStreamProvider(evtName).forTaget(el).listen(fn);
或
el.on[evtName].listen(fn);
答案 1 :(得分:2)
您可以使用:
(const EventStreamProvider<Event>(evtName)).forTarget(el).listen((e) => fn(e));