Виджет PaginatedDataTable
Виджет PaginatedDataTable расширяет
DataTable
постраничной навигацией.
Колонки - columns,
строки на странице - rowsPerPage,
источник строк - source типа DataTableSource.
Синтаксис
PaginatedDataTable(
columns: [
DataColumn(label: Text('abcde')),
],
source: _MySource(),
)
Параметры
| Параметр | Описание |
|---|---|
columns |
Заголовки колонок. |
source |
DataTableSource с данными строк.
|
rowsPerPage |
Сколько строк на одной странице. |
Пример
Давайте покажем таблицу с двумя строками:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: PageTableDemo()));
}
class PageTableDemo extends StatelessWidget
{
const PageTableDemo({super.key});
@override
Widget build(BuildContext context)
{
return Scaffold(
body: PaginatedDataTable(
columns: [DataColumn(label: Text('abcde'))],
source: _DemoSource(),
),
);
}
}
class _DemoSource extends DataTableSource
{
@override
DataRow? getRow(int index) {
return DataRow(cells: [DataCell(Text('12345'))]);
}
@override
bool get isRowCountApproximate => false;
@override
int get rowCount => 2;
@override
int get selectedRowCount => 0;
}
Внизу таблицы кнопки переключения страниц.
Пример
Давайте зададим rowsPerPage:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: PaginatedDataTable(
rowsPerPage: 5,
columns: [DataColumn(label: Text('12345'))],
source: _DemoSource(),
),
),
),
);
}
class _DemoSource extends DataTableSource
{
@override
DataRow? getRow(int index) => DataRow(cells: [DataCell(Text('abcde'))]);
@override
bool get isRowCountApproximate => false;
@override
int get rowCount => 10;
@override
int get selectedRowCount => 0;
}
На странице до пяти строк из десяти.
Смотрите также
-
виджет
DataTable,
таблица без пагинации -
класс
DataRow,
строка данных -
класс
DataColumn,
заголовок колонки -
виджет
SingleChildScrollView,
прокрутка широкой таблицы