showSetColumnsPopup method

  1. @override
void showSetColumnsPopup(
  1. BuildContext context
)
inherited

Implementation

@override
void showSetColumnsPopup(BuildContext context) {
  const titleField = 'title';
  const columnField = 'field';

  final columns = [
    PlutoColumn(
      title: configuration.localeText.setColumnsTitle,
      field: titleField,
      type: PlutoColumnType.text(),
      enableRowChecked: true,
      enableEditingMode: false,
      enableDropToResize: true,
      enableContextMenu: false,
      enableColumnDrag: false,
    ),
    PlutoColumn(
      title: 'hidden column',
      field: columnField,
      type: PlutoColumnType.text(),
      hide: true,
    ),
  ];

  final toRow = _toRowByColumnField(
    titleField: titleField,
    columnField: columnField,
  );

  final rows = refColumns.originalList.map(toRow).toList(growable: false);

  void handleOnRowChecked(PlutoGridOnRowCheckedEvent event) {
    if (event.isAll) {
      hideColumns(refColumns.originalList, event.isChecked != true);
    } else {
      final checkedField = event.row!.cells[columnField]!.value.toString();
      final checkedColumn = refColumns.originalList.firstWhere(
        (column) => column.field == checkedField,
      );
      hideColumn(checkedColumn, event.isChecked != true);
    }
  }

  PlutoGridPopup(
    context: context,
    configuration: configuration.copyWith(
      style: configuration.style.copyWith(
        gridBorderRadius: configuration.style.gridPopupBorderRadius,
        enableRowColorAnimation: false,
        oddRowColor: const PlutoOptional(null),
        evenRowColor: const PlutoOptional(null),
      ),
    ),
    columns: columns,
    rows: rows,
    width: 200,
    height: 500,
    mode: PlutoGridMode.popup,
    onLoaded: (e) {
      e.stateManager.setSelectingMode(PlutoGridSelectingMode.none);
    },
    onRowChecked: handleOnRowChecked,
  );
}