value property
Returns the DateTime value of this field.
If the underlying rawValue is null, this getter returns the current
date and time (DateTime.now()) as a default value. This ensures that
date fields always provide a valid DateTime when accessed.
Returns:
The DateTime value, or DateTime.now() if rawValue is null.
Example:
final field = JsonDate('createdAt');
print(field.value); // Current date/time (default)
field.value = DateTime(2024, 8, 7);
print(field.value); // 2024-08-07 00:00:00.000
Implementation
@override
DateTime get value {
return rawValue ?? DateTime.now();
}
Sets the date value, accepting both DateTime objects and ISO 8601 strings.
This setter provides flexible input handling:
- If
valueis aString, it attempts to parse it as an ISO 8601 date using DateTime.tryParse. If parsing fails, rawValue is set tonull. - If
valueis a DateTime, it is assigned directly. - If
valueisnull, rawValue is set tonull.
Parameters:
value: The date value, which can be a DateTime, an ISO 8601 string, ornull.
Example:
final field = JsonDate('date');
field.value = DateTime.now(); // Direct DateTime
field.value = '2024-08-07T12:34:56Z'; // ISO 8601 string
field.value = 'invalid'; // Sets rawValue to null (parse fails)
Implementation
@override
set value(dynamic value) {
if (value is String) {
rawValue = DateTime.tryParse(value);
return;
}
rawValue = value;
}