Как я могу вызвать своего рода событие 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