validateAll method
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);
}