How do you register for custom events in Dart using the new streams API -
How do you register for custom events in Dart using the new streams API -
i'm trying register customevent (https://developer.mozilla.org/en-us/docs/dom/event/customevent) in dart. old code was:
class="lang-dart prettyprint-override">window.on['foo'].add((e) => print(e.detail));
the new streams api has changed way register events. how register customevents using new api?
the thought custom events declared , used same way built-in events.
so custom event, you'd along lines of:
class="lang-dart prettyprint-override">class datagenerator { static eventstreamprovider<event> dataevent = new eventstreamprovider('data'); }
then listening on elements:
class="lang-dart prettyprint-override">datagenerator.dataevent.fortarget(element).listen(...);
this cleaner 1 time element subclassing supported , events fired straight on element, , when event subclassing allows more useful event types custom events.
we discussed keeping window.on['foo'].listen(...)
api, trying discourage string accessors events polyfill them different event names.
here's more finish example:
class="lang-dart prettyprint-override">import "dart:html"; divelement dartdiv; main() { dartdiv = query("#dartdiv"); // add together button generate customevent called customdartevent. var customeventstreamprovider = new eventstreamprovider<customevent>("customdartevent"); var customeventbutton = new buttonelement() ..text = "generate custom dart event" ..classes.add("gwt-button") // consistency ..onclick.listen((e) { var detail = { "n": 8, "s": "hello dart", "obj": { "hello": "from dart" } }; var event = new customevent("customdartevent", canbubble: false, cancelable: false, detail: detail); window.dispatchevent(event); }); dartdiv.children.add(customeventbutton); // hear customevents called customdartevent. customeventstreamprovider.fortarget(window).listen((e) { printstring(""" received customdartevent: type: ${e.type}, detail: ${e.detail} """); }); } void printstring(string s) { var div = new divelement() ..text = s; dartdiv.children.add(div); }
dart
Comments
Post a Comment