ListNotifier<T> class
A List that behaves like ValueNotifier if its data changes.
Notification Modes
-
CustomNotifierMode.normal: Listeners are only notified when a value actually changes. For example, setting an index to the same value it already has will not notify listeners. No-op operations (like removing a non-existent value) also won't notify.
-
CustomNotifierMode.always: Listeners are notified on every operation, even if the value doesn't change. This ensures UI always updates when operations are attempted.
-
CustomNotifierMode.manual: No automatic notifications. You must call notifyListeners manually after making changes.
Bulk Operations
Two categories of bulk operations:
- Append/Insert operations (addAll, insertAll, setAll, setRange):
Always notify listeners, even with empty input, regardless of notification
mode (except
manual). - Replace operations (fillRange, replaceRange): Compare values in normal mode and only notify if changes occurred.
Transactions
Use startTransAction and endTransAction to batch multiple operations into a single notification. This is useful for atomic updates.
- Implemented types
-
- ValueListenable<
List< T> > - List<
E> - Iterable<
E>
- ValueListenable<
- Mixed-in types
- Available extensions
Constructors
-
ListNotifier({List<
T> ? data, CustomNotifierMode notificationMode = CustomNotifierMode.always, bool customEquality(T x, T y)?}) -
Creates a new listenable List
dataoptional list that should be used as initial value.notificationModedetermines whether to notify listeners if an equal value is assigned. If set to CustomNotifierMode.normal,ListNotifierwill compare if a value passed is equal to the existing value (e.g.,list[5]=4will only callnotifyListenersif the content at index 5 is not equal to 4). To prevent users from wondering why their UI doesn't update if they haven't overridden the equality operator, the default is CustomNotifierMode.always.customEqualitycan be used to set your own criteria for comparing whennotificationModeis set to CustomNotifierMode.normal.
Properties
- customEquality → bool Function(T x, T y)?
-
final
- first ↔ T
-
The first element.
getter/setter pairinherited
- firstOrNull → T?
-
Available on Iterable<
The first element of this iterator, orT> , provided by the IterableExtensions extensionnullif the iterable is empty.no setter - hashCode → int
-
The hash code for this object.
no setterinherited
- hasListeners → bool
-
Whether any listeners are currently registered.
no setterinherited
-
indexed
→ Iterable<
(int, T)> -
Available on Iterable<
Pairs of elements of the indices and elements of this iterable.T> , provided by the IterableExtensions extensionno setter - isEmpty → bool
-
Whether this collection has no elements.
no setterinherited
- isNotEmpty → bool
-
Whether this collection has at least one element.
no setterinherited
-
iterator
→ Iterator<
T> -
A new
Iteratorthat allows iterating the elements of thisIterable.no setterinherited - last ↔ T
-
The last element.
getter/setter pairinherited
- lastOrNull → T?
-
Available on Iterable<
The last element of this iterable, orT> , provided by the IterableExtensions extensionnullif the iterable is empty.no setter - length ↔ int
-
The number of elements in this Iterable.
getter/setter pairinherited-getter
-
nonNulls
→ Iterable<
T> -
Available on Iterable<
The non-T?> , provided by the NullableIterableExtensions extensionnullelements of this iterable.no setter -
reversed
→ Iterable<
T> -
An Iterable of the objects in this list in reverse order.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- single → T
-
Checks that this iterable has only one element, and returns that element.
no setterinherited
- singleOrNull → T?
-
Available on Iterable<
The single element of this iterator, orT> , provided by the IterableExtensions extensionnull.no setter -
toJS
→ JSArray<
T> -
Available on List<
Converts this List to a JSArray by either casting, unwrapping, or cloning the List.T> , provided by the ListToJSArray extensionno setter -
toJSProxyOrRef
→ JSArray<
T> -
Available on List<
Converts this List to a JSArray by either casting, unwrapping, or proxying the List.T> , provided by the ListToJSArray extensionno setter -
value
→ List<
T> -
Returns an immutable view of the current list state.
no setteroverride
-
wait
→ Future<
List< T> > -
Available on Iterable<
Waits for futures in parallel.Future< , provided by the FutureIterable extensionT> >no setter
Methods
-
add(
T value) → void -
Adds
valueto the end of this list, extending the length by one. -
addAll(
Iterable< T> iterable) → void -
Appends all objects of
iterableto the end of this list. -
addListener(
VoidCallback listener) → void -
Register a closure to be called when the object changes.
inherited
-
any(
bool test(T)) → bool -
Checks whether any element of this iterable satisfies
test.inherited -
asMap(
) → Map< int, T> -
An unmodifiable Map view of this list.
inherited
-
asNameMap(
) → Map< String, T> -
Available on Iterable<
Creates a map from the names of enum values to the values.T> , provided by the EnumByName extension -
byName(
String name) → T -
Available on Iterable<
Finds the enum value in this list with nameT> , provided by the EnumByName extensionname. -
cast<
T> () → List< T> -
A view of this iterable as an iterable of
Rinstances.inherited -
clear(
) → void - Removes all objects from this list; the length of the list becomes zero.
-
contains(
Object? element) → bool -
Whether the collection contains an element equal to
element.inherited -
debounce(
Duration timeOut) → Listenable -
Available on Listenable, provided by the FunctionaListener2 extension
-
dispose(
) → void -
Discards any resources used by the object. After this is called, the
object is not in a usable state and should be discarded (calls to
addListener will throw after the object is disposed).
inherited
-
elementAt(
int index) → T -
Returns the
indexth element.inherited -
elementAtOrNull(
int index) → T? -
Available on Iterable<
The element at positionT> , provided by the IterableExtensions extensionindexof this iterable, ornull. -
endTransAction(
{bool notify = true}) → void - Ends a transaction
-
every(
bool test(T)) → bool -
Checks whether every element of this iterable satisfies
test.inherited -
expand<
T> (Iterable< T> f(T)) → Iterable<T> -
Expands each element of this Iterable into zero or more elements.
inherited
-
fillRange(
int start, int end, [T? fillValue]) → void -
Overwrites a range of elements with
fillValue. -
firstWhere(
bool test(T), {T orElse()?}) → T -
The first element that satisfies the given predicate
test.inherited -
fold<
T> (T initialValue, T combine(T previousValue, T element)) → T -
Reduces a collection to a single value by iteratively combining each
element of the collection with an existing value
inherited
-
followedBy(
Iterable< T> other) → Iterable<T> -
Creates the lazy concatenation of this iterable and
other.inherited -
forEach(
void f(T)) → void -
Invokes
actionon each element of this iterable in iteration order.inherited -
getRange(
int start, int end) → Iterable< T> -
Creates an Iterable that iterates over a range of elements.
inherited
-
indexOf(
T element, [int start = 0]) → int -
The first index of
elementin this list.inherited -
indexWhere(
bool test(T), [int start = 0]) → int -
The first index in the list that satisfies the provided
test.inherited -
insert(
int index, T element) → void -
Inserts
elementat positionindexin this list. -
insertAll(
int index, Iterable< T> iterable) → void -
Inserts all objects of
iterableat positionindexin this list. -
join(
[String separator = '']) → String -
Converts each element to a String and concatenates the strings.
inherited
-
lastIndexOf(
T element, [int? start]) → int -
The last index of
elementin this list.inherited -
lastIndexWhere(
bool test(T), [int? start]) → int -
The last index in the list that satisfies the provided
test.inherited -
lastWhere(
bool test(T), {T orElse()?}) → T -
The last element that satisfies the given predicate
test.inherited -
listen(
void handler(ListenableSubscription)) → ListenableSubscription -
Available on Listenable, provided by the FunctionaListener2 extension
let you work with aListenableas it should be by installing ahandlerfunction that is called on any value change ofthisand gets the new value passed as an argument. It returns a subscription object that lets you stop thehandlerfrom being called by callingcancel()on the subscription. Thehandlerget the subscription object passed on every call so that it is possible to uninstall thehandlerfrom thehandleritself. -
map<
T> (T f(T)) → Iterable< T> -
The current elements of this iterable modified by
toElement.inherited -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
notifyListeners(
) → void -
If needed you can notifiy all listeners manually
override
-
reduce(
T combine(T value, T element)) → T -
Reduces a collection to a single value by iteratively combining elements
of the collection using the provided function.
inherited
-
remove(
Object? value) → bool -
Removes the first occurrence of
valuefrom this list. -
removeAt(
int index) → T -
Removes the object at position
indexfrom this list. -
removeLast(
) → T - Removes and returns the last object in this list.
-
removeListener(
VoidCallback listener) → void -
Remove a previously registered closure from the list of closures that are
notified when the object changes.
inherited
-
removeRange(
int start, int end) → void - Removes a range of elements from the list.
-
removeWhere(
bool test(T)) → void -
Removes all objects from this list that satisfy
test. -
replaceRange(
int start, int end, Iterable< T> iterable) → void -
Replaces a range of elements with the elements of
replacements. -
retainWhere(
bool test(T)) → void -
Removes all objects from this list that fail to satisfy
test. -
retype<
T> () → List< T> -
inherited
-
setAll(
int index, Iterable< T> iterable) → void -
Overwrites elements with the objects of
iterable. -
setRange(
int start, int end, Iterable< T> iterable, [int skipCount = 0]) → void -
Writes some elements of
iterableinto a range of this list. -
shuffle(
[Random? random]) → void - Shuffles the elements of this list randomly.
-
singleWhere(
bool test(T), {T orElse()?}) → T -
The single element that satisfies
test.inherited -
skip(
int n) → Iterable< T> -
Creates an Iterable that provides all but the first
countelements.inherited -
skipWhile(
bool test(T)) → Iterable< T> -
Creates an
Iterablethat skips leading elements whiletestis satisfied.inherited -
sort(
[int compare(T, T)?]) → void -
Sorts this list according to the order specified by the
comparefunction. -
startTransAction(
) → void - Starts a transaction that allows to make multiple changes to the List with only one notification at the end.
-
sublist(
int start, [int? end]) → List< T> -
Returns a new list containing the elements between
startandend.inherited -
swap(
int index1, int index2) → void -
Swaps elements at
index1withindex2. -
take(
int n) → Iterable< T> -
Creates a lazy iterable of the
countfirst elements of this iterable.inherited -
takeWhile(
bool test(T)) → Iterable< T> -
Creates a lazy iterable of the leading elements satisfying
test.inherited -
toList(
{bool growable = true}) → List< T> -
Creates a List containing the elements of this Iterable.
inherited
-
toSet(
) → Set< T> -
Creates a Set containing the same elements as this iterable.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
-
where(
bool test(T)) → Iterable< T> -
Creates a new lazy Iterable with all elements that satisfy the
predicate
test.inherited -
whereType<
T> () → Iterable< T> -
Creates a new lazy Iterable with all elements that have type
T.inherited
Operators
-
operator +(
List< T> other) → List<T> -
Returns the concatenation of this list and
other.inherited -
operator ==(
Object other) → bool -
The equality operator.
inherited
-
operator [](
int index) → T -
The object at the given
indexin the list. -
operator []=(
int index, T value) → void -
Sets the value at the given
indexin the list tovalue.