toNullableValuesOf<T extends Object> function
Converts list
to a value iterable of T?
or throws if cannot convert.
The returned iterable may contain null values.
Supported types for T
: String
, num
, int
, BigInt
, double
,
bool
, DateTime
, Identifier
, Object
.
Implementation
Iterable<T?> toNullableValuesOf<T extends Object>(
Iterable<Object?> list, {
bool isExposed = false,
}) {
if (list is Iterable<T?>) {
// value is an iterable with items of the asked type
return isExposed ? List<T?>.unmodifiable(list) : list;
} else if (list is Iterable<T>) {
// value is an iterable with items of non-nullable type of the asked type
return isExposed ? List<T?>.unmodifiable(list) : list.cast<T?>();
} else {
// value is an iterable with items of any type
if (T == Object) {
// requesting Iterable<Object?>
return isExposed ? List<T?>.unmodifiable(list) : list.cast<T?>();
} else {
// requesting more specific types than Object?, map items to T?
return list.map<T?>((dynamic e) => toNullableValueOf<T>(e));
}
}
}