PaginatedDataTable constructor

  1. {Key key,
  2. @required Widget header,
  3. List<Widget> actions,
  4. @required List<DataColumn> columns,
  5. int sortColumnIndex,
  6. bool sortAscending: true,
  7. ValueSetter<bool> onSelectAll,
  8. double dataRowHeight: kMinInteractiveDimension,
  9. double headingRowHeight: 56.0,
  10. double horizontalMargin: 24.0,
  11. double columnSpacing: 56.0,
  12. bool showCheckboxColumn: true,
  13. int initialFirstRowIndex: 0,
  14. ValueChanged<int> onPageChanged,
  15. int rowsPerPage: defaultRowsPerPage,
  16. List<int> availableRowsPerPage: const <int>[defaultRowsPerPage, defaultRowsPerPage * 2, defaultRowsPerPage * 5, defaultRowsPerPage * 10],
  17. ValueChanged<int> onRowsPerPageChanged,
  18. DragStartBehavior dragStartBehavior: DragStartBehavior.start,
  19. @required DataTableSource source}

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).


  Key key,
  @required this.header,
  @required this.columns,
  this.sortAscending = true,
  this.dataRowHeight = kMinInteractiveDimension,
  this.headingRowHeight = 56.0,
  this.horizontalMargin = 24.0,
  this.columnSpacing = 56.0,
  this.showCheckboxColumn = true,
  this.initialFirstRowIndex = 0,
  this.rowsPerPage = defaultRowsPerPage,
  this.availableRowsPerPage = const <int>[defaultRowsPerPage, defaultRowsPerPage * 2, defaultRowsPerPage * 5, defaultRowsPerPage * 10],
  this.dragStartBehavior = DragStartBehavior.start,
  @required this.source,
}) : assert(header != null),
     assert(columns != null),
     assert(dragStartBehavior != null),
     assert(sortColumnIndex == null || (sortColumnIndex >= 0 && sortColumnIndex < columns.length)),
     assert(sortAscending != null),
     assert(dataRowHeight != null),
     assert(headingRowHeight != null),
     assert(horizontalMargin != null),
     assert(columnSpacing != null),
     assert(showCheckboxColumn != null),
     assert(rowsPerPage != null),
     assert(rowsPerPage > 0),
     assert(() {
       if (onRowsPerPageChanged != null)
         assert(availableRowsPerPage != null && availableRowsPerPage.contains(rowsPerPage));
       return true;
     assert(source != null),
     super(key: key);