ListSignalMixin#
Kind:
class |
Package: package:signals_core
Class: ListSignalMixin#
A mixin that adds reactive List methods and operators to a Signal
holding a List value.
This mixin delegates all standard List operations (such as mutations like add,
remove, insert, sort, and clear, and accessor operators like
[] and []=)
to the underlying list, while ensuring that any reads register a dependency
and any mutations automatically trigger reactive updates.
This mixin only works with signals that have a value type extending List.
Example Usage#
import 'package:signals/signals.dart';
class MyListSignal extends Signal<List<int>>
with IterableSignalMixin<int, List<int>>, ListSignalMixin<int, List<int>> {
MyListSignal(super.internalValue);
}
void main() {
final numbers = MyListSignal([1, 2, 3]);
effect(() {
print('Elements: $numbers, Length: ${numbers.length}');
}); // Prints: "Elements: [1, 2, 3], Length: 3"
// Adding an element (automatically calls set() and triggers updates)
numbers.add(4); // Prints: "Elements: [1, 2, 3, 4], Length: 4"
// Modifying an element by index (triggers updates)
numbers[0] = 10; // Prints: "Elements: [10, 2, 3, 4], Length: 4"
}
Since mutations on
ListSignalMixin notify listeners automatically, you do not
need to assign numbers.value = ... to force updates. Methods like add, addAll,
and operator []= take care of notification.
Members of ListSignalMixin#
| Member | Type | Signature | Description |
|---|---|---|---|
| cast | method | dart List | |
| first | method | dart first(E val) | |
| last | method | dart E last | |
| last | method | dart last(E val) | |
| length | method | dart length(int value) | |
| + | method | dart List | |
| [] | method | dart E [](int index) | |
| []= | method | dart void []=(int index, E value) | |
| add | method | dart void add(E value) | |
| addAll | method | dart void addAll(Iterable | |
| asMap | method | dart Map<int, E> asMap() | |
| clear | method | dart void clear() | |
| expand | method | dart Iterable | |
| fillRange | method | dart void fillRange(int start, int end, [E? fillValue]) | |
| firstWhere | method | dart E firstWhere(bool Function(E element) test, {E Function()? orElse}) | |
| fold | method | dart R fold(R initialValue, R Function(R previousValue, E element) combine) | |
| followedBy | method | dart Iterable | |
| getRange | method | dart Iterable | |
| indexOf | method | dart int indexOf(E element, [int start = 0]) | |
| indexWhere | method | dart int indexWhere(bool Function(E element) test, [int start = 0]) | |
| insert | method | dart void insert(int index, E element) | |
| insertAll | method | dart void insertAll(int index, Iterable | |
| lastIndexOf | method | dart int lastIndexOf(E element, [int? start]) | |
| lastIndexWhere | method | dart int lastIndexWhere(bool Function(E element) test, [int? start]) | |
| remove | method | dart bool remove(Object? value) | |
| removeAt | method | dart E removeAt(int index) | |
| removeLast | method | dart E removeLast() | |
| removeRange | method | dart void removeRange(int start, int end) | |
| removeWhere | method | dart void removeWhere(bool Function(E element) test) | |
| replaceRange | method | dart void replaceRange(int start, int end, Iterable | |
| retainWhere | method | dart void retainWhere(bool Function(E element) test) | |
| reversed | method | dart Iterable | |
| setAll | method | dart void setAll(int index, Iterable | |
| setRange | method | dart void setRange(int start, int end, Iterable | |
| shuffle | method | dart void shuffle([Random? random]) | |
| sort | method | dart void sort([int Function(E a, E b)? compare]) | |
| sorted | method | dart List | Return a new array that is sorted by the compare function |
| sublist | method | dart List |
References#
The ListSignalMixin type is referenced and used in the following pages:
- ListSignalMixin (signals_flutter/mixins)
- signals_flutter
- ListSignalMixin (signals_core/mixins)
- signals_core
- ListSignalMixin (signals/mixins)
- signals