Creates a widget describing a paginated DataTable on a Card.
The header should give the card's header, typically a Text widget. It must not be null.
The columns argument must be a list of as many DataColumn objects as the table is to have columns, ignoring the leading checkbox column if any. The columns argument must have a length greater than zero and cannot be null.
If the table is sorted, the column that provides the current primary key should be specified by index in sortColumnIndex, 0 meaning the first column in columns, 1 being the next one, and so forth.
The actual sort order can be specified using sortAscending; if the sort order is ascending, this should be true (the default), otherwise it should be false.
The source must not be null. The source should be a long-lived DataTableSource. The same source should be provided each time a particular PaginatedDataTable widget is created; avoid creating a new DataTableSource with each new instance of the PaginatedDataTable widget unless the data table really is to now show entirely different data from a new source.
The rowsPerPage and availableRowsPerPage must not be null (they both have defaults, though, so don't have to be specified).
Source
PaginatedDataTable({ Key key, @required this.header, this.actions, this.columns, this.sortColumnIndex, this.sortAscending: true, this.onSelectAll, this.initialFirstRowIndex: 0, this.onPageChanged, this.rowsPerPage: defaultRowsPerPage, this.availableRowsPerPage: const <int>[defaultRowsPerPage, defaultRowsPerPage * 2, defaultRowsPerPage * 5, defaultRowsPerPage * 10], this.onRowsPerPageChanged, @required this.source }) : super(key: key) { assert(header != null); assert(columns != null); assert(columns.isNotEmpty); assert(sortColumnIndex == null || (sortColumnIndex >= 0 && sortColumnIndex < columns.length)); assert(sortAscending != null); assert(rowsPerPage != null); assert(rowsPerPage > 0); assert(availableRowsPerPage != null); assert(availableRowsPerPage.contains(rowsPerPage)); assert(source != null); }