¿Cómo puedo escuchar los cambios en las propiedades de los objetos dentro de una lista, con polímero-dardo?

Tengo una lista de objetos (por ejemplo, personas), y agrego y elimino dinámicamente de la lista. Quiero ejecutar una consulta en la lista cuando una determinada propiedad cambia en cualquier elemento de la lista.

Por ejemplo, quiero saber si algún objeto de la lista ha cambiado su propiedad "signedAgreement". No quiero adjuntar escuchas manualmente a cada objeto, solo quiero preguntar a la lista. ¿Cómo puedo hacer esto?

Mi 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();
  }
}

Y mi objeto modelo se parece a:

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;
  }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta