LogoSignals.dart
Copy Markdown
rodydavis/signals.dart 999999

Type: TrackedSignalMixin

API reference and details for TrackedSignalMixin from signals.dart.

TrackedSignalMixin#

Kind: mixin  |  Package: package:signals_core

Mixin: TrackedSignalMixin#

A mixin that adds tracking for the initial and previous values to a Signal.

TrackedSignalMixin stores the initialValue (the value the signal had when it was created or initialized) and the previousValue (the value of the signal right before the most recent update).

If you are looking for full undo/redo capabilities, use ChangeStackSignalMixin instead.

Example Usage#

import 'package:signals/signals.dart';

class MyTrackedSignal extends Signal<int> with TrackedSignalMixin<int> {
  MyTrackedSignal(super.internalValue);
}

void main() {
  final signal = MyTrackedSignal(0);

  print('Initial: ${signal.initialValue}');   // Prints: "Initial: 0"
  print('Previous: ${signal.previousValue}'); // Prints: "Previous: null"

  signal.value = 1;
  print('Initial: ${signal.initialValue}');   // Prints: "Initial: 0"
  print('Previous: ${signal.previousValue}'); // Prints: "Previous: 0"

  signal.value = 2;
  print('Initial: ${signal.initialValue}');   // Prints: "Initial: 0"
  print('Previous: ${signal.previousValue}'); // Prints: "Previous: 1"
}
This mixin only works with values that are immutable or are copied/cloned on mutation. If the value is mutated directly in-place without re-assigning, initialValue and previousValue will end up pointing to the same modified instance as the current value.

Members of TrackedSignalMixin#

Member Type Signature Description
initialValue method dart T initialValue The initial value the signal was created with
previousValue method dart T? previousValue Get the previous value (if exists)

References#

The TrackedSignalMixin type is referenced and used in the following pages: