searchFor function
bool
searchFor(
- String? searchQuery,
- $AFld i,
- dynamic inst,
- ArtifactAccessor accessor,
)
Implementation
bool searchFor(
String? searchQuery,
$AFld i,
dynamic inst,
ArtifactAccessor accessor,
) {
if (searchQuery != null && searchQuery.trim().isNotEmpty) {
Property? property = resolvePropertyAnnotationForField(i);
ListTypeInfo? listType = parseCollectionTypeDescriptor(i.typeDescriptor);
$AClass? listElementClass = listType == null
? null
: resolveArtifactTypeFromDescriptor(listType.elementTypeDescriptor);
$AClass? nestedClass = resolveArtifactTypeFromDescriptor(i.typeDescriptor);
List<String?> addins = [];
try {
addins.add((i.getValue(inst) as dynamic).toString());
} catch (e) {
print("Error getting value for search: $e (${i.name}");
}
if (nestedClass != null) {
try {
addins.add(
ArtifactModelExporter(
() => accessor.artifactToMap(i.getValue(inst)),
).yaml,
);
} catch (_) {}
}
if (listElementClass != null) {
try {
addins.addAll(
(i.getValue(inst) as Iterable).where((x) => x != null).map((i) {
try {
return ArtifactModelExporter(
() => accessor.artifactToMap(i),
).yaml;
} catch (_) {}
return null;
}),
);
} catch (_) {}
}
Iterable<String> ls = <String?>[
...addins,
i.name,
i.name.lowerCamelCaseToUpperSpacedCase,
property?.label,
property?.description,
property?.hint,
].whereType<String>();
return ls.any(
(x) => x.toLowerCase().contains(searchQuery.toLowerCase().trim()),
);
}
return true;
}