xBuilder_XGrid method
Implementation
Widget xBuilder_XGrid(BuildContext context, XGridDataSource dsource) {
return Expanded(
child: Container(
child: SfDataGridTheme(
data: SfDataGridThemeData(
// headerHoverColor: Colors.white.withOpacity(0.3),
// headerColor: Colors.white,
sortIconColor: ThemeData.estimateBrightnessForColor(Colors.black) == Brightness.dark ? Colors.white : Colors.black,
gridLineColor: Colors.white,
gridLineStrokeWidth: 2,
headerColor: Colors.grey[900],
selectionColor: Colors.grey[800],
currentCellStyle: DataGridCurrentCellStyle(borderColor: Colors.white, borderWidth: 1),
),
child: SfDataGrid(
source: dsource,
isScrollbarAlwaysShown: true,
onCellTap: (details) {
if (dataGridController.selectedRow != null) {
if (details.rowColumnIndex.rowIndex - 1 == dataGridController.selectedIndex) {
xEditItem(context, (dataGridController.selectedRow as XDataGridRow).item as K);
}
}
},
onSelectionChanged: (addedRows, removedRows) {
if (addedRows.isNotEmpty) {
xEditItem(context, (dataGridController.selectedRow as XDataGridRow).item as K);
}
},
endSwipeActionsBuilder: (context, dataGridRow, index) {
return Row(mainAxisAlignment: MainAxisAlignment.center, children: [
xBuildYour_EndSwipeAction(context, dataGridRow, index),
widget.allowDelRow
? Container(
width: 87,
alignment: Alignment.center,
margin: EdgeInsets.only(right: 10),
child: ElevatedButton(
style: ElevatedButton.styleFrom(backgroundColor: Colors.redAccent),
child: Text("Remove", textAlign: TextAlign.center, style: TextStyle(color: Colors.white)),
onPressed: () {
xOnPressedDelete(
(dataGridRow as XDataGridRow).item as K,
context,
title_Text: widget.youtText_DelAlert!(dataGridRow.item as K),
func: widget.funct_DelAlert != null
? (value) {
widget.funct_DelAlert!(value);
}
: (value) {},
);
}))
: Container()
]);
},
selectionMode: SelectionMode.single,
navigationMode: GridNavigationMode.cell,
columnWidthMode: ColumnWidthMode.fill,
headerGridLinesVisibility: GridLinesVisibility.both,
gridLinesVisibility: GridLinesVisibility.both,
allowEditing: widget.allowEdit,
allowSwiping: widget.allowDelRow ? true : widget.allowSwipingRow,
allowSorting: widget.allowSort,
allowFiltering: true,
allowMultiColumnSorting: widget.allowMultiSort,
allowTriStateSorting: widget.allowTriStateSort,
allowColumnsResizing: widget.allowColumnsResizing,
columnWidthCalculationRange: ColumnWidthCalculationRange.allRows,
onColumnResizeUpdate: (details) {
var x = widget.view.cols.firstWhere((element) => element.colKey == details.column.columnName);
setState(() => x.width = details.width);
return true;
},
controller: dataGridController,
columns: widget.view.cols.map((e) => e.getXGCol()).toList(),
))));
}