dart如何创建,收听和发出自定义事件?

时间:2013-03-30 10:50:44

标签: dart

我有这样的课程:

class BaseModel {
  Map objects;

  // define constructor here

  fetch() {
    // fetch json from server and then load it to objects
    // emits an event here
  }

}

backbonejs一样,当我呼叫change并在我的视图上为fetch事件创建监听器时,我想发出change事件。

但是从阅读文档开始,我不知道从哪里开始,因为有很多指向事件的内容,例如Event Events EventSource等等。

你们能给我一个暗示吗?

1 个答案:

答案 0 :(得分:17)

我假设您要发出不需要dart:html库的事件。

您可以使用Streams API公开事件流,供其他人监听和处理。这是一个例子:

import 'dart:async';

class BaseModel {
  Map objects;
  StreamController fetchDoneController = new StreamController.broadcast();

  // define constructor here

  fetch() {
    // fetch json from server and then load it to objects
    // emits an event here
    fetchDoneController.add("all done"); // send an arbitrary event
  }

  Stream get fetchDone => fetchDoneController.stream;

}

然后,在您的应用中:

main() {
  var model = new BaseModel();
  model.fetchDone.listen((_) => doCoolStuff(model));
}

使用原生Streams API很不错,因为这意味着您不需要浏览器来测试您的应用程序。

如果您需要发出自定义HTML事件,可以看到以下答案:https://stackoverflow.com/a/13902121/123471