copyWith method
Returns a copy of this object with its field values replaced by the ones provided to this method.
Since durationMilliseconds is nullable, it is defaulted to a negative
number in this method. If left as a negative number, its current value in
this LightDynamics object will be used. This way, if it is null, the
program will know that it is intentionally being set to null.
copyOriginalValues is true if you want to maintain the original object's
initial values. This is useful if you plan on using this object in a PUT
request.
Throws InvalidValueException if the LightDynamics copy has a status
that is not in its statusValues array.
Implementation
LightDynamics copyWith({
String? status,
List<String>? statusValues,
double? speed,
bool? speedValid,
int? durationMilliseconds = -1,
bool copyOriginalValues = true,
}) {
// Make sure [status] is valid.
if (statusValues != null &&
status == null &&
!Validators.isValidValue(this.status, statusValues)) {
throw InvalidValueException.withValue(this.status, statusValues);
}
LightDynamics toReturn = LightDynamics(
status: status ?? this.status,
statusValues: statusValues ?? List<String>.from(this.statusValues),
speed: copyOriginalValues ? _originalSpeed : (speed ?? this.speed),
speedValid: speedValid ?? this.speedValid,
durationMilliseconds: copyOriginalValues
? _originalDurationMilliseconds
: (durationMilliseconds == null || durationMilliseconds >= 0
? durationMilliseconds
: this.durationMilliseconds),
);
if (copyOriginalValues) {
toReturn.speed = speed ?? this.speed;
toReturn.durationMilliseconds =
durationMilliseconds == null || durationMilliseconds >= 0
? durationMilliseconds
: this.durationMilliseconds;
}
return toReturn;
}