| Index: pkg/observe/lib/src/path_observer.dart
|
| diff --git a/pkg/observe/lib/src/path_observer.dart b/pkg/observe/lib/src/path_observer.dart
|
| index cfaab187764caf34f630bca86db670e101073256..d6bf8143ca9a6521d11bc46e0fb5352b95b20599 100644
|
| --- a/pkg/observe/lib/src/path_observer.dart
|
| +++ b/pkg/observe/lib/src/path_observer.dart
|
| @@ -41,6 +41,7 @@ class PathObserver extends _Observer implements Bindable {
|
| /// Sets the value at this path.
|
| void set value(Object newValue) {
|
| if (_path != null) _path.setValueFrom(_object, newValue);
|
| + _discardChanges();
|
| }
|
|
|
| int get _reportArgumentCount => 2;
|
| @@ -431,7 +432,7 @@ class CompoundObserver extends _Observer implements Bindable {
|
| throw new StateError('Cannot add observers once started.');
|
| }
|
|
|
| - observer.open(_deliver);
|
| + observer.open((_) => deliver());
|
| _observed..add(_observerSentinel)..add(observer);
|
| }
|
|
|
| @@ -532,10 +533,7 @@ abstract class _Observer extends Bindable {
|
| return _value;
|
| }
|
|
|
| - get value {
|
| - _check(skipChanges: true);
|
| - return _value;
|
| - }
|
| + get value => _discardChanges();
|
|
|
| void close() {
|
| if (!_isOpen) return;
|
| @@ -545,10 +543,13 @@ abstract class _Observer extends Bindable {
|
| _notifyCallback = null;
|
| }
|
|
|
| - void _deliver(_) {
|
| - if (_isOpen) _dirtyCheck();
|
| + _discardChanges() {
|
| + _check(skipChanges: true);
|
| + return _value;
|
| }
|
|
|
| + bool deliver() => _isOpen ? _dirtyCheck() : false;
|
| +
|
| bool _dirtyCheck() {
|
| var cycles = 0;
|
| while (cycles < _MAX_DIRTY_CHECK_CYCLES && _check()) {
|
|
|