asAsyncValidator method

Future<String?> Function(String?) asAsyncValidator({
  1. String? fallbackValidator(
    1. String?
    )?,
})

Creates a validator function compatible with SmartTextFormField.

Falls back to fallbackValidator when the model isn't loaded.

Implementation

Future<String?> Function(String?) asAsyncValidator({
  String? Function(String?)? fallbackValidator,
}) {
  return (String? value) async {
    if (value == null || value.isEmpty) return null;

    if (!_isReady) {
      // Try to initialize on first use
      try {
        await initialize();
      } catch (_) {
        return fallbackValidator?.call(value);
      }
    }

    final result = await validate(value);

    if (!result.isAvailable) {
      return fallbackValidator?.call(value);
    }

    return result.isValid ? null : result.errorMessage;
  };
}