SignalEquality#
Kind:
class |
Package: package:preact_signals
Class: SignalEquality#
Defines the equality check algorithm used by signals to determine if a new value actually differs from the current value.
By default, signals use standard Dart operator equality (==). However, you can configure
a signal to use different strategies, such as deep equality check for collections or custom comparator checks.
Strategies:
- standard: Default value equality (
a == b). - identity: Identity-based comparison (
identical(a, b)). - deep: Deep collection comparison for Lists, Maps, and Sets.
- custom: User-defined boolean comparison function.
Example Usage#
import 'package:preact_signals/preact_signals.dart';
void main() {
// Create a list signal using deep equality check
final items = signal(
[1, 2, 3],
options: SignalOptions(
equality: SignalEquality.deep(),
),
);
effect(() {
print('Items changed: ${items.value}');
});
// Reassigning an identical value structure does NOT trigger a rebuild!
items.value = [1, 2, 3];
// Triggers rebuild
items.value = [1, 2, 3, 4];
}
Members of SignalEquality#
| Member | Type | Signature | Description |
|---|---|---|---|
| SignalEquality | constructor |
dart SignalEquality() |
@nodoc |
| equals | method |
dart bool equals(Object? a, Object? b) |
Check if two values are equal |
| standard | method |
dart static SignalEquality |
Standard equality check (a == b) |
| identity | method |
dart static SignalEquality |
Identity equality check (identical(a, b)) |
| deep | method |
dart static SignalEquality |
Deep equality check |
| SignalEquality.custom | constructor |
dart SignalEquality.custom(bool Function(T a, T b) fn) |
Custom equality check |
References#
The SignalEquality type is referenced and used in the following pages:
- Signal (signals_flutter/core)
- QueueSignalMixin (signals_flutter/mixins)
- SignalEquality (signals_flutter/utilities)
- signals_flutter
- Signal (signals_core/core)
- QueueSignalMixin (signals_core/mixins)
- SignalEquality (signals_core/utilities)
- signals_core
- Signal (signals/core)
- QueueSignalMixin (signals/mixins)
- SignalEquality (signals/utilities)
- signals
- Signal (preact_signals/core)
- SignalEquality (preact_signals/utilities)
- preact_signals