Я новичок во флаттере.
Я хочу отобразить таблицу с тремя столбцами. Но я не знаю, как изменить количество строк на странице. Возможно, мне следует переопределить onRowsPerPageChanged, но я не знаю как.
Извините за мой плохой английский.
Мой код:
class PaginatedDataTableExample extends StatelessWidget {
const PaginatedDataTableExample({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: PaginatedDataTable(
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(),
),
),
);
}
}





Да, вам нужно использовать свойство onRowsPerPageChanged. Это свойство ожидает функцию обратного вызова, которая будет вызываться, когда пользователь изменит количество строк на странице.
см. пример:
class PaginatedDataTableExample extends StatefulWidget {
const PaginatedDataTableExample({Key? key}) : super(key: key);
@override
_PaginatedDataTableExampleState createState() =>
_PaginatedDataTableExampleState();
}
class _PaginatedDataTableExampleState extends State<PaginatedDataTableExample> {
int _rowsPerPage = PaginatedDataTable.defaultRowsPerPage;
final List<int> _rowsPerPageOptions = [5, 10, 20];
@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(),
),
),
);
}
}
вы можете использовать
rowsPerPage: 3в PaginatedDataTable.