DataTable _createDataTable() { return DataTable( columns: _createColumns(), rows: _createRows(), sortColumnIndex: _currentSortColumn, sortAscending: _isSortAsc, ); } List _createColumns() { return [ DataColumn( label: Text('ID'), onSort: (columnIndex, _) { setState(() { _currentSortColumn = columnIndex; if (_isSortAsc) { _books.sort((a, b) => b['id'].compareTo(a['id'])); } else { _books.sort((a, b) => a['id'].compareTo(b['id'])); } _isSortAsc = !_isSortAsc; }); }, ), DataColumn(label: Text('Book')), DataColumn(label: Text('Author')) ]; } List _createRows() { return _books .map((book) => DataRow(cells: [ DataCell(Text('#' + book['id'].toString())), DataCell(Text(book['title'])), DataCell(Text(book['author'])) ])) .toList(); }