validateAll method

Future<bool> validateAll(
  1. List<Map<String, List>> schema
)

Validates multiple fields using a schema of field-rule mappings.

Each schema entry should contain a single field name mapped to its rule list. Empty maps are ignored, which allows controllers to build schemas conditionally.

Returns true only when every validation in the schema succeeds.

Example:

final valid = await request.validateAll([
  {
    'name': [Rule.required, Rule.min(2), Rule.max(50)],
  },
  {
    'email': [Rule.required, Rule.email, Rule.unique<User>(column: 'email')],
  },
  {
    'password': [Rule.required, Rule.min(8)],
  },
]);

Implementation

Future<bool> validateAll(List<Map<String, List<dynamic>>> schema) async {
  final tasks = schema.map((target) {
    // accounts for empty validation maps in controllers
    if (target.isEmpty) return Future.value(true);
    return validate(field: target.keys.first, rules: target.values.first);
  });

  final results = await Future.wait(tasks);
  return results.every((validation) => validation == true);
}