applySearchAndSort static method

List<Map<String, Object?>> applySearchAndSort({
  1. required List<Map<String, Object?>> rows,
  2. required List<String> columns,
  3. required String searchText,
  4. required String? sortColumn,
  5. required bool sortAscending,
})

Implementation

static List<Map<String, Object?>> applySearchAndSort({
  required List<Map<String, Object?>> rows,
  required List<String> columns,
  required String searchText,
  required String? sortColumn,
  required bool sortAscending,
}) {
  var result = List<Map<String, Object?>>.from(rows);
  final query = searchText.trim().toLowerCase();

  if (query.isNotEmpty) {
    result = result.where((row) {
      return columns.any((column) {
        final value = normalizeValue(row[column]).toLowerCase();
        return value.contains(query);
      });
    }).toList();
  }

  if (sortColumn != null) {
    result.sort((a, b) {
      final comparison = compareValues(a[sortColumn], b[sortColumn]);
      return sortAscending ? comparison : -comparison;
    });
  }

  return result;
}