safeParseAsync method

Future<VResult<T?>> safeParseAsync(
  1. Object? value
)

Async variant of safeParse. Use this when the schema has async validators (added via refineAsync).

final result = await schema.safeParseAsync(value);

Implementation

Future<VResult<T?>> safeParseAsync(Object? value) async {
  Object? input = await runPreprocessorsAsync(value);

  final resolution = _resolveNull<T>(_defaultValue, _hasDefault, input);
  if (resolution.earlyReturn != null) return resolution.earlyReturn!;
  input = resolution.input;

  final T typed;

  if (coercer != null) {
    try {
      typed = coercer!(input!);
    } catch (_) {
      return _typeError<T>(T.toString(), input!);
    }
  } else {
    try {
      typed = input as T;
    } catch (_) {
      return _typeError<T>(T.toString(), input!);
    }
  }

  return _runPipelineAsync(typed);
}