change_notifier 0.25.0 change_notifier: ^0.25.0 copied to clipboard
Support for marking objects as observable
0.25.0 #
- Bumped dependencies and SDK
- Made spy in ObservableList public
0.24.0 #
- Migrated to null safety.
- BREAKING CHANGE: Changed ChangeNotifier to AsyncChangeNotifier.
- BREAKING CHANGE: Removed all deprecated stuff like
Observable
class - The class
ChangeNotifier
is now an extraction of Flutter CoreChangeNotifier
0.23.0 #
- Support latest dependencies.
- Reintroduce custom equality for
PropertyChangeRecord
from 0.18.0.
0.22.2 #
- Add
toObservableList
andtoObservableMap
, better typed versions oftoObservable
.
0.22.1+5 #
Fix generic type error that occurs when using ChangeNotifier with a subclass of
ChangeRecord. Previously, calling notifyChanges()
on
class Foo with ChangeNotifier<CustomChangeRecord> {}
would throw a type error.
Now, the changes
stream emits a custom ChangeRecords
class that implements
the List
interface. This change is backwards compatible.
0.22.1+4 #
-
Support Dart 2 stable.
-
Bump and widen dev dependencies on build packages.
0.22.1+3 #
Update implementations of the cast()
and the deprecated retype()
methods.
- The
retype()
method on List and Map is deprecated and will be removed. - The
cast()
method should do what theretype()
method did.
0.22.1+2 #
- Widen dependency on quiver to include v0.29.
0.22.1+1 #
- Fixes for Dart2 runtime type errors.
0.22.1 #
-
Added
ObservableList.castFrom
, similar toList.castFrom
. -
Changed
ObservableList
'scast
andretype
function to create a forwarding instance ofObservableList
instead of an instance ofList
.
0.22.0 #
-
Added
ObservableMap.castFrom
, similar toMap.castFrom
. -
Fixed a bug where
ObservableMap
'scast
andretype
function would create a new empty instance instead of a forwarding instance.
0.21.3 #
- Support Dart 2 collection methods where previously threw
UnimplementedError
.
0.21.2 #
- Fix
toObservable(deep: false)
to be shallow again. - Remove use of
Maps
, for better compatibility with Dart 2.
0.21.1 #
- Updated one test to comply with Dart 2 voidness semantics.
- Fix Dart 2 runtime cast failure in
toObservable()
. - Loosen
ObservableList.from()
to takeIterable
, notIterable<T>
. This matchesList.from()
and avoids some unnecessary cast failures.
0.21.0 #
Breaking Changes #
Version 0.21.0 reverts to version 0.17.0+1 with fixes to support Dart 2. Versions 0.18, 0.19, and 0.20 were not used by the package authors and effectively unsupported. This resolves the fork that happened at version 0.18 and development can now be supported by the authors.
Reverted Changes
(From 0.20.1)
- Revert add
Observable<List|Set|Map>.unmodifiable
for immutable collections - Revert add
Observable<List|Set|Map>.EMPTY
for empty immutable collections- This can be used as an optimization for libraries that always need to return an observable collection, but don't want to allocate a new instance to represent an empty immutable.
(From 0.20.0)
- Revert add
ObservableSet
,SetChangeRecord
, andSetDiffer
(From 0.19.0)
- Revert refactor and deprecate
ObservableMap
-specific APIObservableMap
no longer emits#keys
and#values
change recordsObservableMap.spy
is deprecated, becomes.delegate
instead
- Revert Potentially breaking:
ObservableMap
may no longer be extended
Revert considered deprecated to be notified of length
changes.
(From 0.18.0)
- Revert refactor and deprecate
ObservableList
-specific APIObservableList.applyChangeRecords
ObservableList.calculateChangeRecords
ObservableList.withLength
ObservableList.deliverListChanges
ObservableList.discardListChanges
ObservableList.hasListChanges
ObservableList.listChanges
ObservableList.notifyListChange
- Revert potentially breaking:
ObservableList
may no longer be extended
Revert considered deprecated to be notified of length
, isEmpty
and
isNotEmpty
PropertyChangeRecord
s on ObservableList
Changes Applied on top of version 0.17.0+1
(With internal change numbers)
- Flip deliverChanges from
@protected
to@visibleForTesting
. cl/147029982 - Fix a typing bug in observable when running with DDC:
ChangeRecord.NONE
creates aList<ChangeRecord>
, while the call sites expect aList<ListChangeRecord>
orList<MapChangeRecord>
, respectively. cl/155201160 - Fix
Observable._isNotGeneric
check. cl/162282107 - Fix issue with type in deliverChanges. cl/162493576
- Stop using the comment syntax for generics. cl/163224019
- Fix ListChangeRecord's added getter. Add checks for the added and removed getters in listChangeTests. cl/169261086.
- Migrate observable to real generic method syntax. cl/170239122
- Fix only USES_DYNAMIC_AS_BOTTOM error in observable. cl/179946618
- Cherry pick https://github.com/dart-lang/observable/pull/46.
- Stub out Dart 2 core lib changes in ObservableMap.
- Removed
Observable{List|Map}.NONE
(not Dart2 compatible). - Fix issue with type in
ObservableList._notifyListChange
. cl/182284033
0.20.4+3 #
- Support the latest release of
pkg/quiver
(0.27).
0.20.4+2 #
- Support the latest release of
pkg/quiver
(0.26). - Bug fix: Some minor type fixes for strict runtimes (and Dart 2.0), namely:
- PropertyChangeNotifier merely
extends ChangeNotifier
rather thanextends ChangeNotifier<PropertyChangeRecord>
. - Introduce new
ListChangeRecord.NONE
andMapChangeRecord.NONE
.
- PropertyChangeNotifier merely
0.20.4+1 #
- Support the latest release of
pkg/quiver
(0.25).
0.20.4 #
- Bug fix: Additional fix around
ObservableList.listChanges
0.20.3 #
- Bug fix: Avoid emitting an empty list via
ObservableList.listChanges
0.20.2 #
- Bug fix: Avoid emitting a no-op
MapChangeRecord
- Bug fix: Restore
ObservableList.discardListChanges
functionality
0.20.1 #
- Add
Observable<List|Set|Map>.unmodifiable
for immutable collections - Add
Observable<List|Set|Map>.EMPTY
for empty immutable collections- This can be used as an optimization for libraries that always need to return an observable collection, but don't want to allocate a new instance to represent an empty immutable.
0.20.0 #
- Add
ObservableSet
,SetChangeRecord
, andSetDiffer
0.19.0 #
- Refactor and deprecate
ObservableMap
-specific APIObservableMap
no longer emits#keys
and#values
change recordsObservableMap.spy
is deprecated, becomes.delegate
instead
- Potentially breaking:
ObservableMap
may no longer be extended
It is also considered deprecated to be notified of length
changes.
0.18.1 #
- Bug fix: Do not throw when
Observable<T>.notifyChange
is used
0.18.0 #
- Refactor and deprecate
ObservableList
-specific APIObservableList.applyChangeRecords
ObservableList.calculateChangeRecords
ObservableList.withLength
ObservableList.deliverListChanges
ObservableList.discardListChanges
ObservableList.hasListChanges
ObservableList.listChanges
ObservableList.notifyListChange
- Potentially breaking:
ObservableList
may no longer be extended
It is also considered deprecated to be notified of length
, isEmpty
and isNotEmpty
PropertyChangeRecord
s on ObservableList
- in a
future release ObservableList.changes
will be
Stream<List<ListChangeRecord>>
.
0.17.0+1 #
- Revert
PropertyChangeMixin
, which does not work in dart2js
0.17.0 #
This is a larger change with a goal of no runtime changes for current
customers, but in the future Observable
will become a very
lightweight interface, i.e.:
abstract class Observable<C extends ChangeRecord> {
Stream<List<C>> get changes;
}
- Started deprecating the wide
Observable
interfaceChangeNotifier
should be used as a base class for these methods:Observable.observed
Observable.unobserved
Observable.hasObservers
Observable.deliverChanges
Observable.notifyChange
PropertyChangeNotifier
should be used for these methods:Observable.notifyPropertyChange
- Temporarily,
Observable
usesChangeNotifier
- Existing users of anything but
implements Observable
should move to implementing or extendingChangeNotifier
. In a future releaseObservable
will reduce API surface down to an abstractStream<List<C>> get changes
.
- Existing users of anything but
- Added the
ChangeNotifier
andPropertyChangeNotifier
classes- Can be used to implement
Observable
in a generic manner
- Can be used to implement
- Observable is now
Observable<C extends ChangeRecord>
- When passing a generic type
C
,notifyPropertyChange
is illegal
- When passing a generic type
0.16.0 #
- Refactored
MapChangeRecord
- Added equality and hashCode checks
- Added
MapChangeRecord.apply
to apply a change record
- Added
MapDiffer
, which implementsDiffer
for aMap
0.15.0+2 #
- Fix a bug in
ListDiffer
that caused aRangeError
0.15.0+1 #
- Fix analysis errors caused via missing
/*<E>*/
syntax in0.15.0
0.15.0 #
- Added the
Differ
interface, as well asEqualityDiffer
- Refactored list diffing into a
ListDiffer
- Added concept of
ChangeRecord.ANY
andChangeRecord.NONE
- Low-GC ways to expression "something/nothing" changed
- Refactored
ListChangeRecord
- Added named constructors for common use cases
- Added equality and hashCode checks
- Added
ListChangeRecord.apply
to apply a change record
- Added missing
@override
annotations to satisfyannotate_overrides
0.14.0+1 #
- Add a missing dependency on
pkg/meta
.