Como posso ouvir as alterações nas propriedades dos objetos dentro de uma lista, com o polímero-dardo?

Eu tenho uma lista de objetos (por exemplo, pessoas), e eu adiciono e removo dinamicamente da lista. Eu quero executar uma consulta em toda a lista quando uma determinada propriedade é alterada em qualquer item na lista.

Por exemplo, quero saber se algum objeto na lista tem sua propriedade "signedAgreement" alterada. Eu não quero anexar ouvintes manualmente a cada objeto, só quero perguntar à lista. Como posso fazer isso?

Meu código:

library my_element;

import 'package:polymer/polymer.dart';
import 'dart:html';
import 'models.dart';

@CustomTag("my-element")
class MyElement extends PolymerElement with ObservableMixin {
  final List people = toObservable([]); // observe adds/removes to the list
  final Person newPerson = new Person();

  // How can I know when to re-evaluate signedCount?

  int get signedCount => people.where((Person p) => p.signedAgreement).length;

  void save(Event e, var detail, Node target) {
    people.add(new Person.from(newPerson));
    newPerson.blank();
  }
}

E meu objeto de modelo se parece com:

library models;

import 'package:polymer/polymer.dart';

class Person extends Object with ObservableMixin {
  @observable String name;
  @observable bool signedAgreement = false;

  Person();

  Person.from(Person other) {
    name = other.name;
    signedAgreement = other.signedAgreement;
  }

  blank() {
    name = '';
    signedAgreement = false;
  }
}

questionAnswers(1)

yourAnswerToTheQuestion