deepSearchByValue<V> method
Returns new instance of recursively filtered (by value) List.
Implementation
List deepSearchByValue<V>(bool predicate(V value)) {
var newList = [];
forEach((element) {
if (element is List) {
var newElement = element.deepSearchByValue<V>(predicate);
if (newElement.isNotEmpty) {
newList.add(newElement);
}
} else if (element is Set) {
var newElement = element.deepSearchByValue(predicate);
if (newElement.isNotEmpty) {
newList.add(newElement);
}
} else if (element is Map) {
var newElement = element.deepSearchByValue(predicate);
if (newElement.isNotEmpty) {
newList.add(newElement);
}
} else if (element is V && predicate(element)) {
newList.add(element);
}
});
return newList;
}