Skip to content

Validating a List value

import 'package:luthor/luthor.dart';
void main() {
final validator = l.list(validators: [l.int()]);
print(validator.validateValue([42]));
}
import 'package:luthor/luthor.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'list_schema.freezed.dart';
part 'list_schema.g.dart';
@luthor
@freezed
abstract class ListSchema with _$ListSchema {
const factory ListSchema({
required List<int> numbers,
List<String?>? optionalNullableStrings,
}) = _ListSchema;
factory ListSchema.fromJson(Map<String, dynamic> json) =>
_$ListSchemaFromJson(json);
}
void main() {
// Using generated validation function
final result = $ListSchemaValidate({
'numbers': [1, 2, 3],
'optionalNullableStrings': ['hello', null, 'world'],
});
switch (result) {
case SchemaValidationSuccess(data: final data):
print('✅ Valid: ${data.numbers}');
case SchemaValidationError(errors: final errors):
print('❌ Errors: $errors');
}
}

The code generator automatically creates list validators:

// Generated code
Validator $ListSchemaSchema = l.withName('ListSchema').schema({
ListSchemaSchemaKeys.numbers: l
.list(validators: [l.int().required()])
.required(),
ListSchemaSchemaKeys.optionalNullableStrings: l.list(
validators: [l.string()], // No .required() for nullable elements
),
});
SchemaValidationResult<ListSchema> $ListSchemaValidate(
Map<String, dynamic> json,
) => $ListSchemaSchema.validateSchema(json, fromJson: ListSchema.fromJson);