letOrNull<T> function
T?
letOrNull<T>(
- dynamic input
Let's you convert input
to a T
type if possible, or returns null
if
the conversion cannot be performed.
Supported types:
- bool
- double
- int
- num
- String
- DateTime
- Uri
Implementation
T? letOrNull<T>(dynamic input) {
try {
if (T == dynamic) return input as T;
if (input == null && T != Null) return null;
if (T == input.runtimeType) return input as T;
if (typeEquality<T, double>() || typeEquality<T, double?>()) {
return letDoubleOrNull(input) as T;
} else if (typeEquality<T, int>() || typeEquality<T, int?>()) {
return letIntOrNull(input) as T;
} else if (typeEquality<T, num>() || typeEquality<T, num?>()) {
return letNumOrNull(input) as T;
} else if (typeEquality<T, bool>() || typeEquality<T, bool?>()) {
return letBoolOrNull(input) as T;
} else if (typeEquality<T, DateTime>() || typeEquality<T, DateTime?>()) {
return letDateTimeOrNull(input) as T;
} else if (typeEquality<T, Uri>() || typeEquality<T, Uri?>()) {
return letUriOrNull(input) as T;
} else if (typeEquality<T, String>() || typeEquality<T, String?>()) {
return input?.toString() as T;
}
return input as T;
} catch (_) {}
return null;
}