jsonDecodeDurationInMicroseconds function
Converts a dynamic value to a Duration in microseconds.
Returns Duration.zero for invalid or null input.
durationInMicrosecondsFromJson('1000000'); // 0:00:01.000000
durationInMicrosecondsFromJson(1000000); // 0:00:01.000000
durationInMicrosecondsFromJson(null); // 0:00:00.000000
Implementation
Duration jsonDecodeDurationInMicroseconds(final dynamic value) {
if (value == null) return Duration.zero;
Duration handleDouble(final double value) {
final microseconds = value.toInt();
return Duration(microseconds: microseconds);
}
return switch (value) {
final double value => handleDouble(value),
final int value => Duration(microseconds: value),
final String value => () {
final doubleMicroseconds = double.tryParse(value);
if (doubleMicroseconds != null) return handleDouble(doubleMicroseconds);
final intMicroseconds = int.tryParse(value);
if (intMicroseconds != null) {
return Duration(microseconds: intMicroseconds);
}
return Duration.zero;
}(),
_ => Duration.zero,
};
}