letNumOrNull function
Let's you convert input
to a num type if possible, or returns null if the
conversion cannot be performed.
Implementation
num? letNumOrNull(dynamic input) {
if (input is num) return input;
if (input is String) {
final trimmed = input.trim();
return num.tryParse(trimmed) ?? trimmed.tryParseDuration()?.inMilliseconds;
}
if (input is Duration) return input.inMilliseconds;
if (input is DateTime) return input.millisecondsSinceEpoch;
if (input is bool) return input ? 1 : 0;
try {
// Assume input is a Timestamp (from Firestore package).
return input.millisecondsSinceEpoch;
} catch (_) {}
return null;
}