filter method
void
filter(
- String fieldName, {
- dynamic isGreaterThan,
- dynamic isGreaterOrEqualThan,
- dynamic isLessThan,
- dynamic isLessOrEqualThan,
{"name" : "x" , "age" : 15} ,
{"name" : "y" , "age" : 20} , {"name" : "z" , "age" : 25}
filter("age", isGreaterThan: 20) => {"name" : "z" , "age" : 25}
filter("age", isGreaterOrEqualThan: 20) =>
{"name" : "y" , "age" : 20} , {"name" : "z" , "age" : 25}
Implementation
void filter(String fieldName,
{dynamic isGreaterThan,
dynamic isGreaterOrEqualThan,
dynamic isLessThan,
dynamic isLessOrEqualThan}) {
var _l = List<bool>.generate(4, (index) {
if (index == 0) return isGreaterThan != null;
if (index == 1) return isGreaterOrEqualThan != null;
if (index == 2) return isLessThan != null;
if (index == 3) return isLessOrEqualThan != null;
return false;
});
assert(_l.where((element) => element).length == 1, "Only use one");
assert(
isGreaterThan != null ||
isGreaterOrEqualThan != null ||
isLessThan != null ||
isLessOrEqualThan != null,
"Use one condition");
if (isGreaterThan != null) {
_filters["\$gt"] ??= <String, dynamic>{};
_filters["\$gt"][fieldName] = isGreaterThan;
}
if (isGreaterOrEqualThan != null) {
_filters["\$gte"] ??= <String, dynamic>{};
_filters["\$gte"][fieldName] = isGreaterOrEqualThan;
}
if (isLessThan != null) {
_filters["\$lt"] ??= <String, dynamic>{};
_filters["\$lt"][fieldName] = isLessThan;
}
if (isLessOrEqualThan != null) {
_filters["\$lte"] ??= <String, dynamic>{};
_filters["\$lte"][fieldName] = isLessOrEqualThan;
}
}