build method
dynamic
build( - 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,
),
),
),
],
);
}