toList<T> static method
List<T>
toList<T>(
- dynamic value, {
- ValueConverter<
T> ? converter, - EntryConverter<
T> ? entryConverter, - bool hardCast = false,
Tries to parse value into List.
List, Map, Iterable.
Use converter
or entryConverter
to convert values into new List.
Use hardCast
if you are sure that value
contains expected Types and there is no need to convert items.
Implementation
static List<T> toList<T>(dynamic value,
{ValueConverter<T>? converter,
EntryConverter<T>? entryConverter,
bool hardCast = false}) {
final items = <T>[];
Map? valueMap;
if (value == null) {
return items;
}
if (value is Map) {
valueMap = value;
value = value.values;
}
if (value is Iterable) {
if (converter != null) {
value.forEach((item) {
final listItem = convert(item, converter: converter);
if (listItem != null) {
items.add(listItem);
}
});
} else if (entryConverter != null) {
if (valueMap == null) {
valueMap = value.toList().asMap();
}
valueMap.forEach((key, item) {
final listItem = convertEntry(key, item, converter: entryConverter);
if (listItem != null) {
items.add(listItem);
}
});
} else {
if (value is List && hardCast) {
try {
return value.cast<T>();
} catch (err) {
printDebug(err.toString());
}
}
value.forEach((item) {
if (item is T) {
items.add(item);
}
});
}
} else {
if (converter != null) {
final listItem = convert(value, converter: converter);
if (listItem != null) {
items.add(listItem);
}
} else if (entryConverter != null) {
final listItem = convertEntry(0, value, converter: entryConverter);
if (listItem != null) {
items.add(listItem);
}
} else {
if (value is T) {
items.add(value);
}
}
}
return items;
}