value property

  1. @override
DateTime get value
override

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();
}
  1. @override
set value (dynamic value)
override

Sets the date value, accepting both DateTime objects and ISO 8601 strings.

This setter provides flexible input handling:

  • If value is a String, it attempts to parse it as an ISO 8601 date using DateTime.tryParse. If parsing fails, rawValue is set to null.
  • If value is a DateTime, it is assigned directly.
  • If value is null, rawValue is set to null.

Parameters:

  • value: The date value, which can be a DateTime, an ISO 8601 string, or null.

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;
}