如何在Flutter中使用分页数据表中的DataRows列表



我有一个DataTable,用户可以在其中动态添加和删除DataRows。正因为如此,DataTable可以变得非常大。为了提高性能,我希望使用PaginatedDataTable。但是这个Widget需要一个额外的数据源类。它的基本代码看起来是这样的:

class DataSource extends DataTableSource {
int _selectedCount = 0;
@override
int get rowCount => list.length;
@override
bool get isRowCountApproximate => false;
@override
int get selectedRowCount => _selectedCount;
@override
DataRow getRow(int index) {
return DataRow.byIndex(
index: index,
cells: <DataCell>[
DataCell(Text('1')),
DataCell(Text('2')),
DataCell(Text('3')),
DataCell(Text('4')),
]);
}
}

在我的旧代码中,我使用了一个DataTable,在那里我有一个列表中的所有DataRows,它工作得很好。以下是代码中的一个片段和列表:

class ExerciseTable extends StatefulWidget {
@override
_ExerciseTableState createState() => _ExerciseTableState();
}
class _ExerciseTableState extends State<ExerciseTable> {
ExerciseDataSource _rowsDataSource;
List<DataRow> _rowList = [
DataRow(cells: <DataCell>[
DataCell(Text('1')),
DataCell(Text('2')),
DataCell(Text('3')),
DataCell(Text('4')),
]),
];
void _addRow() {
_rowList.insert(0,
DataRow(cells: <DataCell>[
DataCell(Text('1')),
DataCell(Text('2')),
DataCell(Text('3')),
DataCell(Text('4')),
])
);
}
void _removeRow() {
setState(() {
_rowList.removeAt(0);
});
}

现在,我想将相同的列表与PaginatedDataTable的DataRows一起使用,但如何在"DataSource"类中集成该列表?我很感激每一个答案,如果有人知道如何做到这一点,那就太好了:(

根据海关需求集成PaginatedDataTable可能有点令人困惑,但您可以将数据源列表传递给DataSource类(通过构造函数(,并在getRow方法上使用可以迭代数据的索引。

例如:

@Override
DataRow getRow(int index) {
final currentData = yourDataList[index]
return DataRow.byIndex(
index: index,
cells: <DataCell>[
DataCell(Text('${currentData.name}'},
],
);
}

最新更新