Jak słuchać niestandardowych wydarzeń w Dart?

Chcę zrobić coś takiego

// WARNING: this code does not work, it's illustrative
query("#myBtn").onClick.listen((e) {
  window.fire["foo"];
});

window.on["foo"].listen((e) => print("foo was here"));

window.on["foo"].listen((e) => print("and here"));

Czy to możliwe? W jaki sposób? Poszukuję w Google już od kilku godzin, ale w ogóle jestem nowy w programowaniu, więc tak naprawdę nie znam żadnych słów kluczowych dla tego rodzaju rzeczy.

Dzięki! :)

- EDYCJA: Rozwiązany -

Oto jak przekazywać argumenty (redaktor narzeka, ale działa)

List<String> myData = ["one","two"];

query("#myBtn").onClick.listen((e) {
  window.on["foo"].dispatch(new CustomEvent("foo", canBubble: false, cancelable: false, detail: myData));
});

window.on["foo"].add((e) => print( e.detail[1] ));

:-)

questionAnswers(2)

yourAnswerToTheQuestion