Creating a ValueObject

Steps to create a ValueObject

Declare your class this way :

/// SingleValueObject
class Age extends SingleValueObject<InvalidAge, ValidAge> with _$Age {}

/// MultiValueObject
class GeoPoint extends MultiValueObject<InvalidGeoPoint, ValidGeoPoint>
    with _$GeoPoint {}

Add the imports and part statements, the @Modddel annotation, and the private empty constructor.

Add the factory constructor :

/// SingleValueObject
//...
factory Age(int value) //...

/// MultiValueObject
//...
factory GeoPoint({
  required int latitude,
  required int longitude,
}) //...

Create your failure(s) sealed class(es).

You can now run the generator, and then override and implement the "validate" methods.

Default validationSteps names

The name parameter of the ValidationStep is optional. If you omit it, it will be replaced by a default name :

Step
Default name
Example

1

Value1

InvalidAgeValue1

2

Value2

InvalidAgeValue2

3

Value3

InvalidAgeValue3

...

...

...

If there's only one step, then its default name is 'Value' (instead of 'Value1').

Complete Example

Last updated