jsonDecodeDurationInMicroseconds function

Duration jsonDecodeDurationInMicroseconds(
  1. dynamic value
)

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