我如何在Dart中收听自定义事件?

Gor*_*per 13 dart

我想做点什么

// 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"));
Run Code Online (Sandbox Code Playgroud)

可能吗?怎么样?我一直在Google上搜索几个小时,但我对编程很新,所以我真的不知道任何类似的关键字.

谢谢!:)

- 编辑:解决 -

以下是如何传递参数(编辑器会抱怨,但它有效)

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] ));
Run Code Online (Sandbox Code Playgroud)

:-)

Kai*_*ren 16

你说你想要传递数据.我们假设我们有这个类:

class Person {
    String name;
    int age;
}
Run Code Online (Sandbox Code Playgroud)

然后这个听众:

window.on['foo'].listen((e) {
  Person p = e.detail;

  print(p.name); // Jack
});
Run Code Online (Sandbox Code Playgroud)

我们需要传递数据的所有东西都是这样的:

var p = new Person()
  ..name = 'Jack'
  ..age = 25;

var e = new CustomEvent('foo', detail: p);

window.on['foo'].dispatch(e);
Run Code Online (Sandbox Code Playgroud)

这是做到这一点的方法.查看文档:


Jus*_*ani 7

这应该工作:

window.on['foo'].listen((e) => print("foo was here"));
Run Code Online (Sandbox Code Playgroud)

查看文档: