showSetColumnsPopup method
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,
);
}