letDurationOrNull function
Let's you convert input to a Duration type if possible, or returns null
if the conversion cannot be performed.
Implementation
Duration? letDurationOrNull(dynamic input) {
if (input is Duration) {
return input;
}
if (input is int) {
return Duration(milliseconds: input);
}
if (input is DateTime) {
return Duration(milliseconds: input.millisecondsSinceEpoch);
}
if (input is String) {
return input.tryParseDuration();
}
if (input is num) {
return Duration(milliseconds: input.round());
}
try {
// Assume input is a Timestamp (from Firestore package).
return Duration(milliseconds: input.millisecondsSinceEpoch);
} catch (_) {}
return null;
}