captureStates<T> function
Future<List<T> >
captureStates<T>({
- required ValueListenable<
T> listenable, - required Future<
void> act(), - bool includeInitial = true,
- Duration settle = Duration.zero,
Captures all values emitted by a ValueListenable while act runs.
Implementation
Future<List<T>> captureStates<T>({
required ValueListenable<T> listenable,
required Future<void> Function() act,
bool includeInitial = true,
Duration settle = Duration.zero,
}) async {
final values = <T>[];
if (includeInitial) values.add(listenable.value);
void onState() => values.add(listenable.value);
listenable.addListener(onState);
try {
await act();
if (settle > Duration.zero) {
await Future<void>.delayed(settle);
}
} finally {
listenable.removeListener(onState);
}
return values;
}