value property

  1. @override
num get value
override

Returns the numeric value of this field.

If the underlying rawValue is null, this getter returns 0 as a default value. This ensures that number fields always provide a valid numeric value when accessed, which is useful for calculations.

Returns: The numeric value (can be int or double), or 0 if rawValue is null.

Example:

final field = JsonNumber('count');
print(field.value); // 0 (default)

field.value = 42;
print(field.value); // 42

Implementation

@override
num get value => rawValue ?? 0;
  1. @override
set value (dynamic value)
override

Sets the numeric value, accepting both numbers and numeric strings.

This setter provides flexible input handling:

  • num or null: Assigned directly to rawValue (accepts both int and double since they extend num)
  • String: Parsed using num.tryParse(). If parsing fails, rawValue is set to null

Parameters:

  • value: The value to set, which can be a num (int or double), a numeric String, or null.

Example:

final field = JsonNumber('count');
field.value = 42;      // Integer
field.value = 3.14;    // Double
field.value = "100";   // String → 100
field.value = "invalid"; // Sets rawValue to null

Implementation

@override
set value(dynamic value) {
  if (value is num?) {
    rawValue = value;
    return;
  }
  if (value is String) {
    rawValue = num.tryParse(value);
    return;
  }
}