nullOnError method

Future<T?> nullOnError({
  1. FutureOr<void> onError(
    1. Object e,
    2. StackTrace s
    )?,
  2. FutureOr<void> onErrorOrNull(
    1. Object? e,
    2. StackTrace? s
    )?,
  3. AsyncExtensionErrorLogger? errorLogger,
  4. bool logError = true,
})

Returns this Future value or null if it throws an error.

Logs the error using errorLogger or defaultAsyncExtensionErrorLogger if parameter logError is true.

Implementation

Future<T?> nullOnError(
    {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);
    }
    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;
  }
}