hasChanged property
Gets a value that indicates if a change has occurred.
Implementation
@override
bool get hasChanged {
if (_hasChanged) {
return true;
}
// Check if cancellation was requested
if (_cancellationTokenSource?.isCancellationRequested ?? false) {
_hasChanged = true;
return true;
}
// Only check if enough time has passed since last check
final now = DateTime.now();
if (_lastCheckedTime != null &&
now.difference(_lastCheckedTime!) < _pollingInterval) {
return false;
}
_lastCheckedTime = now;
try {
if (_file.existsSync()) {
final currentWriteTime = _file.lastModifiedSync();
if (_previousWriteTime == null) {
// File was created
_hasChanged = true;
_previousWriteTime = currentWriteTime;
} else if (currentWriteTime != _previousWriteTime) {
// File was modified
_hasChanged = true;
_previousWriteTime = currentWriteTime;
}
} else if (_previousWriteTime != null) {
// File was deleted
_hasChanged = true;
_previousWriteTime = null;
}
} catch (e) {
// If we can't access the file, consider it changed
_hasChanged = true;
}
return _hasChanged;
}