dc_datatable_paginator 1.0.0 dc_datatable_paginator: ^1.0.0 copied to clipboard
Widget Datatable with pagination
ScreenShot #
Usage #
-
Add reference to pubspec.yaml.
-
Import:
import 'package:dc_datatable_paginator/dc_datatable_paginator.dart';
- Create DcDataTableSource:
import 'package:dc_datatable_paginator/dc_datatable_paginator.dart';
import 'package:flutter/material.dart';
import 'model_example.dart';
class MyDataSource extends DcDataTableSource {
@override
List<DataColumn> get columns {
return const [
DataColumn(label: Text('Id')),
DataColumn(label: Text('Name')),
DataColumn(label: Text('Description')),
];
}
@override
Future<DcDataTablePaged> onLoadData() async {
List<ModelExample> dados = List.generate(10, (i) {
i++;
return ModelExample(
id: i,
name: "Name $i",
description: "Description: Record:$i Page: $currentPage");
});
return DcDataTablePaged(data: dados, totalRecords: 110);
}
@override
DataRow getRow(int i, List data, List dataSelected) {
ModelExample model = data[i];
return DataRow(
cells: <DataCell>[
DataCell(Text(model.id.toString())),
DataCell(Text(model.name)),
DataCell(Text(model.description)),
],
selected: dataSelected.contains(model),
onSelectChanged: (value) {
if (dataSelected.contains(model)) {
dataSelected.remove(model);
} else {
dataSelected.add(model);
}
debugPrint("Row Selected $i");
});
}
}
- Add DcDataTableSource in Providers:
void main() {
runApp(ChangeNotifierProvider(
create: (_) => MyDataSource(),
child: const MyApp(),
));
}
- Get Provider and use:
MyDataSource source = Provider.of<MyDataSource>(context, listen: true);
DcDataTable(
labelPage: 'Page',
labelRecords: 'Records',
source: source,
),