Fix ChangeNotifier generic typing issue (#76)

Fix ChangeNotifier generic typing issue - ChangeRecord.ANY and ChangeRecord.None is not typesafe for any subclasses of ChangeNotifier that subclass the generic.

Proposed solution is to output a `ChangeRecords extends List<ChangeRecord>` with additional metadata to indicate the change is ANY or NONE.

Advantage of this change is that it is backwards compatible with existing code while fixing type exceptions for future code.
10 files changed
tree: 0af99832571d86c61e478b6249ae84bdcfb52b66
  1. .gitignore
  2. .travis.yml
  8. analysis_options.yaml
  9. dart_test.yaml
  10. lib/
  11. pubspec.yaml
  12. test/
  13. tool/

Build Status

Support for detecting and being notified when an object is mutated.

An observable is a way to be notified of a continuous stream of events over time.

Some suggested uses for this library:

  • Observe objects for changes, and log when a change occurs
  • Optimize for observable collections in your own APIs and libraries instead of diffing
  • Implement simple data-binding by listening to streams

You may want to look at the former TC39 proposal Observe.observe, which was deprecated.


There are two general ways to detect changes:

  • Listen to Observable.changes and be notified when an object changes
  • Use Differ.diff to determine changes between two objects