build method

  1. @override
dynamic build(
  1. dynamic context
)

Implementation

@override
Widget build(BuildContext context) {
  double currentWidth = MediaQuery.of(context).size.width;
  double dataTableWidth = (currentWidth >= largeWidthBreakpoint)
      ? currentWidth * 0.8
      : currentWidth * 0.9;

  if (widget.sortOnLoaded) {
    widget.data.sort(
      (data1, data2) => _compareString(
        isAscending,
        data1.getCells()[widget.sortColumnIndex],
        data2.getCells()[widget.sortColumnIndex],
      ),
    );
  }
  final DataTableSource dataTableSource = _MyDataTableSource(
    getDataRows(widget.data, dataTableWidth),
  );
  return Column(
    mainAxisAlignment: MainAxisAlignment.center,
    crossAxisAlignment: CrossAxisAlignment.center,
    children: [
      Text(
        widget.title,
        textAlign: TextAlign.center,
        style: Theme.of(context).textTheme.headlineLarge,
      ),
      rowDivider,
      Text(
        widget.description,
        textAlign: TextAlign.center,
        style: Theme.of(context).textTheme.titleLarge,
      ),
      rowDivider,
      SizedBox(
        width: dataTableWidth,
        child: CenteredBoxDecoration(
          borderRadius: 8,
          borderWidth: 6,
          color: Theme.of(context).colorScheme.primary,
          child: PaginatedDataTable(
            dataRowMaxHeight: double.infinity,
            sortColumnIndex: sortColumnIndex,
            sortAscending: isAscending,
            columns: widget.dataCategories
                .map(
                  (String column) => DataColumn(
                    label: Text(column),
                    onSort: (int columnIndex, bool ascending) {
                      setState(() {
                        widget.data.sort(
                          (data1, data2) => _compareString(
                            isAscending,
                            data1.getCells()[columnIndex],
                            data2.getCells()[columnIndex],
                          ),
                        );

                        sortColumnIndex = columnIndex;
                        isAscending = ascending;
                      });
                    },
                  ),
                )
                .toList(),
            source: dataTableSource,
          ),
        ),
      ),
    ],
  );
}