notifyMayHaveChanged method
Notify that this provider may have changed.
This does not guarantee that the provider did change, only that it is possible that it did.
Implementation
@protected
void notifyMayHaveChanged() {
assert(() {
if (_debugCurrentlyBuildingElement == null ||
_debugCurrentlyBuildingElement == this) {
return true;
}
final parentsQueue = DoubleLinkedQueue<ProviderElement>.from(
_subscriptions.keys,
);
while (parentsQueue.isNotEmpty) {
final parent = parentsQueue.removeFirst();
if (parent == _debugCurrentlyBuildingElement) {
return true;
}
parentsQueue.addAll(parent._subscriptions.keys);
}
throw AssertionError('''
The provider $provider was marked as needing to be recomputed while creating ${_debugCurrentlyBuildingElement!.provider},
but $provider does not depend on ${_debugCurrentlyBuildingElement!.provider}.
''');
}(), '');
if (!_mounted) {
throw StateError('Cannot call onDispose after a provider was dispose');
}
if (_dirty) {
return;
}
_dirty = true;
for (final listener in _listeners) {
if (listener.mayHaveChanged != null) {
_runGuarded(listener.mayHaveChanged!);
}
}
if (_didMount) {
for (final observer in _container._observers) {
_runUnaryGuarded(
observer.mayHaveChanged,
_origin,
);
}
}
}