buildDataTable<T> static method

Widget buildDataTable<T>(
  1. BuildContext context,
  2. List<String> columns,
  3. List<String> fields,
  4. bool sortAscending,
  5. int? sortColumnIndex,
  6. dynamic listOfData,
  7. Function onEditTap,
  8. Function onDeleteTap, {
  9. Function? onSort,
  10. double headingRowHeight = 45,
  11. Color headingRowColor = Colors.redAccent,
  12. double columnTextFontSize = 15,
  13. bool columnTextBold = true,
  14. double columnSpacing = 30,
  15. Widget? actionWidget,
  16. Widget? actionEditWidget,
  17. Widget? actionDeleteWidget,
  18. Function? onActionTap,
  19. bool isScrollable = false,
})

Implementation

static Widget buildDataTable<T>(
  BuildContext context,
  List<String> columns,
  List<String> fields,
  bool sortAscending,
  int? sortColumnIndex,
  dynamic listOfData,
  Function onEditTap,
  Function onDeleteTap, {
  Function? onSort,
  double headingRowHeight = 45,
  Color headingRowColor = Colors.redAccent,
  double columnTextFontSize = 15,
  bool columnTextBold = true,
  double columnSpacing = 30,
  Widget? actionWidget,
  Widget? actionEditWidget,
  Widget? actionDeleteWidget,
  Function? onActionTap,
  bool isScrollable = false,
  // bool refreshIndicator = false,
  // Key refreshkey,
  // Function onRefresh,
}) {
  List<DataRow> rows = [];

  listOfData.forEach(
    (model) {
      rows.add(
        DataRow(
          cells: fields.map(
            (field) {
              if (field == "") {
                List<Widget> actionWidgets = [];

                if (actionEditWidget == null) {
                  actionWidgets.add(
                    GestureDetector(
                      child: Icon(
                        Icons.edit,
                        color: Colors.black,
                      ),
                      onTap: () {
                        return onEditTap(model);
                      },
                    ),
                  );
                } else {
                  actionWidgets.add(
                    GestureDetector(
                      child: actionEditWidget,
                      onTap: () {
                        return onEditTap(model);
                      },
                    ),
                  );
                }

                if (actionDeleteWidget == null) {
                  actionWidgets.add(
                    GestureDetector(
                      child: Icon(
                        Icons.delete,
                        color: Colors.red,
                      ),
                      onTap: () {
                        return onDeleteTap(model);
                      },
                    ),
                  );
                } else {
                  actionWidgets.add(
                    GestureDetector(
                      child: actionDeleteWidget,
                      onTap: () {
                        return onDeleteTap(model);
                      },
                    ),
                  );
                }

                if (actionWidget != null) {
                  actionWidgets.add(
                    GestureDetector(
                      child: actionWidget,
                      onTap: () {
                        return onActionTap!(model);
                      },
                    ),
                  );
                }

                return DataCell(
                  Align(
                    alignment: Alignment.centerRight,
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.spaceAround,
                      crossAxisAlignment: CrossAxisAlignment.end,
                      children: actionWidgets,
                    ),
                  ),
                );
              } else {
                return DataCell(
                  Text(
                    _getValue(model.toJson(), field).toString(),
                  ),
                );
              }
            },
          ).toList(),
        ),
      );
    },
  );

  // return refreshIndicator
  //     ? Container(
  //         child: RefreshIndicator(
  //           key: refreshkey,
  //           onRefresh: () {
  //             return onRefresh();
  //           },
  //           child: _dataTable<T>(
  //             context,
  //             columns,
  //             fields,
  //             sortAscending,
  //             sortColumnIndex,
  //             listOfData,
  //             onEditTap,
  //             onDeleteTap,
  //             rows,
  //             onSort: onSort,
  //             headingRowHeight: headingRowHeight,
  //             headingRowColor: headingRowColor,
  //             columnTextFontSize: columnTextFontSize,
  //             columnTextBold: columnTextBold,
  //             columnSpacing: columnSpacing,
  //           ),
  //         ),
  //       )
  return _dataTable<T>(
    context,
    columns,
    fields,
    sortAscending,
    sortColumnIndex,
    listOfData,
    onEditTap,
    onDeleteTap,
    rows,
    onSort: onSort!,
    headingRowHeight: headingRowHeight,
    headingRowColor: headingRowColor,
    columnTextFontSize: columnTextFontSize,
    columnTextBold: columnTextBold,
    columnSpacing: columnSpacing,
    isScrollable: isScrollable,
  );
}