whereOperator method
Filters items using various comparison operators
Supported operators:
- '==' : Equal to
- '!=' : Not equal to
- '>' : Greater than
- '>=' : Greater than or equal to
- '<' : Less than
- '<=' : Less than or equal to
- 'contains' : String contains
- 'startswith' : String starts with
- 'endswith' : String ends with
- 'isnull' : Field is null
- 'notnull' : Field is not null
Example:
final result = response
.whereOperator('price', '>=', 100)
.whereOperator('name', 'contains', 'Pro')
.whereOperator('deletedAt', 'isnull', null);
field The field name to check
operator The comparison operator to use
value The value to compare against (not needed for isnull/notnull)
Implementation
PaginatedModel<T> whereOperator(
String field, String operator, dynamic value) {
return where((item) {
final map = item.toJson();
final fieldValue = map[field];
switch (operator.toLowerCase()) {
case '==':
return fieldValue == value;
case '!=':
return fieldValue != value;
case '>':
return (fieldValue as num) > (value as num);
case '>=':
return (fieldValue as num) >= (value as num);
case '<':
return (fieldValue as num) < (value as num);
case '<=':
return (fieldValue as num) <= (value as num);
case 'contains':
return fieldValue.toString().contains(value.toString());
case 'startswith':
return fieldValue.toString().startsWith(value.toString());
case 'endswith':
return fieldValue.toString().endsWith(value.toString());
case 'isnull':
return fieldValue == null;
case 'notnull':
return fieldValue != null;
default:
throw ArgumentError('Operador não suportado: $operator');
}
});
}