xBuilder_XGrid method

Widget xBuilder_XGrid(
  1. BuildContext context,
  2. XGridDataSource<XFDataItem> dsource
)

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);
                                          // xDSource!.dataGridRows.remove(dataGridRow);
                                          // xDSource!.list.remove(dataGridRow.item);
                                        }
                                      : (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(),
              ))));
}