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'},
      );
    }
  }
}