PlutoGridColumnFilterConfig constructor

const PlutoGridColumnFilterConfig({
  1. List<PlutoFilterType>? filters,
  2. PlutoGridResolveDefaultColumnFilter? resolveDefaultColumnFilter,
  3. int? debounceMilliseconds,
})

Set the filter information of the column.

Return the value returned by resolveDefaultColumnFilter through the resolver function. Prevents errors returning filter that are not in the filters list.

The value of returning from resolveDefaultColumnFilter becomes the condition of TextField below the column or is set as the default filter when calling the column popup.


var filterConfig = PlutoColumnFilterConfig(
  filters: const [
    ...FilterHelper.defaultFilters,
    // custom filter
    ClassYouImplemented(),
  ],
  resolveDefaultColumnFilter: (column, resolver) {
    if (column.field == 'text') {
      return resolver<PlutoFilterTypeContains>();
    } else if (column.field == 'number') {
      return resolver<PlutoFilterTypeGreaterThan>();
    } else if (column.field == 'date') {
      return resolver<PlutoFilterTypeLessThan>();
    } else if (column.field == 'select') {
      return resolver<ClassYouImplemented>();
    }

    return resolver<PlutoFilterTypeContains>();
  },
);

class ClassYouImplemented implements PlutoFilterType {
  String get title => 'Custom contains';

  get compare => ({
        String base,
        String search,
        PlutoColumn column,
      }) {
        var keys = search.split(',').map((e) => e.toUpperCase()).toList();

        return keys.contains(base.toUpperCase());
      };

  const ClassYouImplemented();
}

Implementation

const PlutoGridColumnFilterConfig({
  List<PlutoFilterType>? filters,
  PlutoGridResolveDefaultColumnFilter? resolveDefaultColumnFilter,
  int? debounceMilliseconds,
})  : _userFilters = filters,
      _userResolveDefaultColumnFilter = resolveDefaultColumnFilter,
      _debounceMilliseconds = debounceMilliseconds == null
          ? PlutoGridSettings.debounceMillisecondsForColumnFilter
          : debounceMilliseconds < 0
              ? 0
              : debounceMilliseconds;