value property
T
get
value
Gets the current value and registers this SwiftValue as a dependency
Implementation
T get value {
// Check for computed tracker first
final computedTracker = ComputedTrackerRegistry.current;
if (computedTracker != null) {
computedTracker.dependencies.add(this);
// Zero overhead: only track if DevTools is enabled
if (SwiftDevTools.isEnabled && SwiftDevTools.isTrackingDependencies) {
// Note: ComputedTracker doesn't have ID, skip for now
// DevTools extension can infer from stack
}
}
// Then check for mark widget
final mark = MarkRegistry.current;
if (mark != null) {
mark.register(this);
// Zero overhead: only track if DevTools is enabled
if (SwiftDevTools.isEnabled && SwiftDevTools.isTrackingDependencies) {
SwiftDevTools.trackDependency(
SwiftDevTools.getMarkId(mark),
SwiftDevTools.getSwiftId(this),
);
}
}
return _value;
}
set
value
(T newValue)
Sets a new value and notifies listeners if changed
Implementation
set value(T newValue) {
if (_value == newValue) return;
final oldValue = _value;
final stopwatch = Stopwatch()..start();
_value = newValue;
notifyListenersTransaction();
stopwatch.stop();
// Zero overhead: only track if enabled
if (PerformanceMonitor.isEnabled && stopwatch.elapsedMilliseconds > 0) {
PerformanceMonitor.trackUpdate(
runtimeType.toString(),
stopwatch.elapsed,
);
}
// Zero overhead: only track if DevTools is enabled
if (SwiftDevTools.isEnabled) {
SwiftDevTools.trackStateChange(
SwiftDevTools.getSwiftId(this),
oldValue,
newValue,
);
if (SwiftDevTools.isTrackingPerformance) {
SwiftDevTools.trackPerformanceEvent(
_devToolsName ?? runtimeType.toString(),
stopwatch.elapsed,
{'type': 'SwiftUpdate'},
);
}
}
}