dc_datatable_paginator 1.0.1 copy "dc_datatable_paginator: ^1.0.1" to clipboard
dc_datatable_paginator: ^1.0.1 copied to clipboard

outdated

Widget Datatable with pagination

ScreenShot #

screenshot

Usage #

  1. Add reference to pubspec.yaml.

  2. Import:

import 'package:dc_datatable_paginator/dc_datatable_paginator.dart';
  1. Create Model:

class ModelExample {
  final int id;
  final String name;
  final String description;
  ModelExample({
    required this.id,
    required this.name,
    required this.description,
  });

  @override
  bool operator ==(Object other) {
    if (identical(this, other)) return true;

    return other is ModelExample &&
        other.id == id &&
        other.name == name &&
        other.description == description;
  }

  @override
  int get hashCode => id.hashCode ^ name.hashCode ^ description.hashCode;
}

  1. Create DcSource:

import 'package:dc_datatable_paginator/dc_datatable_paginator.dart';
import 'package:flutter/material.dart';
import 'model_example.dart';

class MyDataSource extends DcSource {


  //create columns
  @override
  List<DataColumn> get columns {
    return const [
      DataColumn(label: Text('Id')),
      DataColumn(label: Text('Name')),
      DataColumn(label: Text('Description')),
    ];
  }


  //get data from API
  @override
  Future<DcPaged> onLoadData() async {
    List<ModelExample> dados = List.generate(10, (i) {
      i++;
      return ModelExample(
          id: i,
          name: "Name $i",
          description: "Description:  Record:$i   Page: $currentPage");
    });

    return DcPaged(data: dados, totalRecords: 110);
  }


  //create row from each record
  @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");
        });
  }
}

  1. Add MyDataSource in Providers:

void main() {
  runApp(ChangeNotifierProvider(
    create: (_) => MyDataSource(),
    child: const MyApp(),
  ));
}


  1. Get Provider and use your UI:


import 'package:dc_datatable_paginator/dc_datatable_paginator.dart';
import 'package:flutter/material.dart';
import 'my_data_source.dart';
// ignore: depend_on_referenced_packages
import 'package:provider/provider.dart';

class MyHomePage extends StatelessWidget {
  final String title;

  const MyHomePage({Key? key, required this.title}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    //
    MyDataSource source = Provider.of<MyDataSource>(context, listen: true);


    return Scaffold(
      appBar: AppBar(
        title: Text(title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [

            DcDataTablePaginator(
              labelPage: 'Page',
              labelRecords: 'Records',
              source: source,
            )

          ],
        ),
      ),
    );

    //record search simulation in an api
  }


} //end class


7
likes
0
pub points
27%
popularity

Publisher

unverified uploader

Widget Datatable with pagination

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, provider

More

Packages that depend on dc_datatable_paginator