Есть вот такая реализация
PaginatedDataTable
:
class PaginatedDataTableExample extends StatefulWidget {
const PaginatedDataTableExample({super.key});
@override
_PaginatedDataTableExampleState createState() =>
_PaginatedDataTableExampleState();
}
class _PaginatedDataTableExampleState extends State<PaginatedDataTableExample> {
int _rowsPerPage = PaginatedDataTable.defaultRowsPerPage;
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: PaginatedDataTable(
rowsPerPage: _rowsPerPage,
onRowsPerPageChanged: (newRowsPerPage) {
setState(() {
_rowsPerPage = newRowsPerPage!;
});
},
columns: const [
DataColumn(
label: Text(
"id",
style: TextStyle(fontWeight: FontWeight.bold),
),
),
DataColumn(
label: Text(
"Begin",
style: TextStyle(fontWeight: FontWeight.bold),
),
),
DataColumn(
label: Text(
"End",
style: TextStyle(fontWeight: FontWeight.bold),
),
),
],
source: DataTableSourceExample(),
),
),
);
}
}
И
DataTableSource
для него:
class DataTableSourceExample extends DataTableSource{
final List<Map<String, dynamic>> data = List.generate(
999999,
(index) => {
"id": index,
"begin_datetime": DateTime.now(),
"end_date": DateTime.now(),
},
);
@override
DataRow? getRow(int index) {
return DataRow(cells: [
DataCell(Text(data[index]["id"].toString())),
DataCell(Text(data[index]["begin_datetime"].toString())),
DataCell(Text(data[index]["end_date"].toString())),
],
);
}
@override
bool get isRowCountApproximate => false;
@override
int get rowCount => data.length;
@override
int get selectedRowCount => 0;
}
Но в
DataTableSourceExample
список заранее создан (просто для теста). В дальнейшем планируется обращаться к стороннему API, в котором записей будет под миллион и больше, не хотелось бы тянуть их все сразу. Поэтому я хочу загружать из API только то количество записей, которые необходимо отобразить на странице.
Поэтому вопрос: как в
DataTableSourceExample
передать из
PaginatedDataTableExample
количество строк на странице (я так понимаю,
rowsPerPage
) и индекс элемента, с которого нужно загружать необходимое количество строк?