Как мне получать уведомления, когда что-то добавляется или удаляется из наблюдаемого списка в Dart?

У меня есть наблюдаемый список от Polymer и Dart. Я хочу, чтобы геттер запускался, когда что-то добавляется или удаляется из списка. Как я могу это сделать?

Мой список:

final ObservableList masterList = toObservable([]);

Мой геттер:

List get subList => masterList.where((item) => item.isDone);

Когда я добавляю или удаляю из masterList, я хочу, чтобы subList обновлял представление.


person Seth Ladd    schedule 24.09.2013    source источник


Ответы (1)


Используйте changes для прослушивания любых изменений в наблюдаемом объекте. Вы можете поместить это в обратный вызов жизненного цикла created():

class Example extends PolymerElement with ObservableMixin {
  final ObservableList masterList = toObservable([]);
  created() {
    masterList.changes.listen((List<ChangeRecord> changes) {
      notifyProperty(this, const Symbol('subList'));
    }
  }

  List get subList => masterList.where((item) => item.isDone);
}

Важно помнить, что changes следит за добавлениями и удалениями из masterList. Вероятно, вам не нужен типичный шаблон bindProperty, потому что он просто отслеживает изменения самой переменной (если переменная установлена ​​на другой объект, то будет выполняться bindProperty).

person Seth Ladd    schedule 24.09.2013
comment
Есть ли способ прослушивать изменения в isDone в элементах в masterList и чтобы это оценивало геттер subList? - person Christophe Herreman; 24.09.2013
comment
@ChristopheHerreman, если вы зададите это как вопрос StackOverflow, я думаю, у меня есть ответ :) - person Seth Ladd; 24.09.2013
comment
@ChristopheHerreman Я только что спросил и ответил здесь: stackoverflow.com/questions/18994372/ - person Seth Ladd; 25.09.2013