whereOperator method

PaginatedModel<T> whereOperator(
  1. String field,
  2. String operator,
  3. dynamic value
)

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');
    }
  });
}