onComplete method
Future<T?>
onComplete({
- required FutureOr<
void> onSuccess(- T? r
- FutureOr<
void> onError(- Object e,
- StackTrace s
- FutureOr<
void> onErrorOrNull(- Object? e,
- StackTrace? s
- AsyncExtensionErrorLogger? errorLogger,
- bool logError = true,
Calls onSuccess
or onError
when this Future completes.
If onErrorOrNull
is defined, calls onErrorOrNull
if it completes
with null
or with an error.
Logs the error using errorLogger
or defaultAsyncExtensionErrorLogger
if parameter logError
is true
.
Implementation
Future<T?> onComplete({
required FutureOr<void> Function(T? r) onSuccess,
FutureOr<void> Function(Object e, StackTrace s)? onError,
FutureOr<void> Function(Object? e, StackTrace? s)? onErrorOrNull,
AsyncExtensionErrorLogger? errorLogger,
bool logError = true,
}) async {
try {
var r = await this;
if (r == null && onErrorOrNull != null) {
await onErrorOrNull(null, null);
} else {
await onSuccess(r);
}
return r;
} catch (e, s) {
if (logError) errorLogger.logError(e, s);
if (onErrorOrNull != null) {
await onErrorOrNull(e, s);
} else if (onError != null) {
await onError(e, s);
}
return null;
}
}