when<R> method
R
when<R>({
- required R data(}),
- required R error(),
- required R loading(),
Implementation
R when<R>({
required R Function(Iterable<T> data, {bool isLoading}) data,
required R Function(Object, StackTrace?) error,
required R Function() loading,
}) {
final snapshotWithError =
singleWhereOrNull((snapshot) => snapshot.hasError);
final hasData = any((snapshot) => snapshot.hasData);
if (snapshotWithError != null) {
return error(snapshotWithError.error!, snapshotWithError.stackTrace);
} else if (hasData) {
return data(
map((snapshot) => snapshot.data!).toList(),
isLoading: any((snapshot) {
return snapshot.connectionState == ConnectionState.active;
}),
);
} else {
return loading();
}
}