Как я могу вызвать своего рода событие onChange в классе

Я пытаюсь построить приложение в дартс. Я внедряю класс обслуживания в два других, чтобы поделиться некоторыми данными. Проблема в том, что я не знаю, как я могу вызвать событие (onChange) в одном классе при изменении атрибута другого класса (async).

1 ответ

Решение

Вы можете либо создать потоковый геттер, где другие могут слушать, либо использовать наблюдаемый.

Поток:

import 'dart:async';

// custom event class
class MyEvent {
  String eventData;

  MyEvent(this.eventData);
}

// class that fires when something changes
class SomeClass {
  var changeController = new StreamController<MyEvent>();
  Stream<MyEvent> get onChange => changeController.stream;

  void doSomething() {
    // do the change
    changeController.add(new MyEvent('something changed'));
  }
}

// listen to changes
...
var c = new SomeClass();
c.onChange.listen((e) => print(e.eventData));
...

Наблюдаемый: см.
- Соблюдайте упаковку из полимерного дротика
Использовать класс Dart ChangeNotifier?
- http://www.dartdocs.org/documentation/observe/0.12.2/index.html

Другие вопросы по тегам