Can call ChangeNotifier.hasListeners after disposed (#108931)

This commit is contained in:
chunhtai 2022-08-04 10:21:06 -07:00 committed by GitHub
parent c22b7f697f
commit 6225bea261
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 4 deletions

View file

@ -170,11 +170,10 @@ class ChangeNotifier implements Listenable {
/// [notifyListeners]; and similarly, by overriding [removeListener], checking
/// if [hasListeners] is false after calling `super.removeListener()`, and if
/// so, stopping that same work.
///
/// This method returns false if [dispose] has been called.
@protected
bool get hasListeners {
assert(ChangeNotifier.debugAssertNotDisposed(this));
return _count > 0;
}
bool get hasListeners => _count > 0;
/// Register a closure to be called when the object changes.
///

View file

@ -349,6 +349,20 @@ void main() {
expect(error, isNull);
});
test('Can check hasListener on a disposed ChangeNotifier', () {
final HasListenersTester<int> source = HasListenersTester<int>(0);
source.addListener(() { });
expect(source.testHasListeners, isTrue);
FlutterError? error;
try {
source.dispose();
expect(source.testHasListeners, isFalse);
} on FlutterError catch (e) {
error = e;
}
expect(error, isNull);
});
test('Value notifier', () {
final ValueNotifier<double> notifier = ValueNotifier<double>(2.0);