searchData method
Part Extension of List<DataItem> to search data
Implementation
List<DataItem> searchData(DataSearch parameter) {
if (parameter.builder == null &&
(parameter.keys == null && parameter.value == null)) {
throw "Search exception: silahkan gunakan parameter key dan value atau gunakan builder";
}
if (parameter.builder != null &&
(parameter.keys != null && parameter.value != null)) {
throw "Search exception: silahkan gunakan salah satu parameter key dan value atau gunakan builder";
}
List<DataItem> result = [];
if (parameter.keys != null && parameter.value != null) {
for (DataItem data in this) {
String validator = "";
for (DataKey key in parameter.keys!) {
validator += data.get(key) ?? "";
}
// final RegExp filterRegExp =
// RegExp(validator, caseSensitive: false, unicode: true);
// if (filterRegExp.hasMatch(parameter.value ?? "")) {
// result.add(data);
// }
if (validator.toLowerCase().contains(parameter.value!.toLowerCase())) {
result.add(data);
}
}
}
// if (parameter.builder != null) {
// for (DataItem data in this) {
// bool valid = parameter.builder!(data);
// if (valid) {
// result.add(data);
// }
// }
// }
Set<String> ids = result.map((e) => e.id).toSet();
result.retainWhere((x) => ids.remove(x.id));
return result;
}