Flutter PaginatedDataTable rowsPerPage

后端 未结 5 624
我寻月下人不归
我寻月下人不归 2021-02-09 10:23

Can flutter PaginatedDataTable rowsPerPage be set to a number not divisible by 10?

UPDATE

Data used b

5条回答
  •  一整个雨季
    2021-02-09 11:00

      import 'package:flutter/material.dart';
    
        class DemoTable extends StatelessWidget {
          @override
          Widget build(BuildContext context) {
            return _DemoTableBody();
          }
        }
    
        class _DemoTableBody extends StatefulWidget {
          @override
          __DemoTableBodyState createState() => __DemoTableBodyState();
        }
    
        class __DemoTableBodyState extends State<_DemoTableBody> {
    
          int _rowsPerPage = PaginatedDataTable.defaultRowsPerPage;
    
          // A Variable to hold the length of table based on the condition of comparing the actual data length with the PaginatedDataTable.defaultRowsPerPage
    
          int _rowsPerPage1 = PaginatedDataTable.defaultRowsPerPage;
    
          @override
          Widget build(BuildContext context) {
    
          //Obtain the data to be displayed from the Derived DataTableSource
    
            var dts = DTS(); 
    
            // dts.rowcount provides the actual data length, ForInstance, If we have 7 data stored in the DataTableSource Object, then we will get 12 as dts.rowCount
    
           var tableItemsCount = dts.rowCount; 
    
            // PaginatedDataTable.defaultRowsPerPage provides value as 10
    
            var defaultRowsPerPage = PaginatedDataTable.defaultRowsPerPage;
    
            // We are checking whether tablesItemCount is less than the defaultRowsPerPage which means we are actually checking the length of the data in DataTableSource with default PaginatedDataTable.defaultRowsPerPage i.e, 10
    
            var isRowCountLessDefaultRowsPerPage = tableItemsCount < defaultRowsPerPage;
    
            // Assigning rowsPerPage as 10 or acutal length of our data in stored in the DataTableSource Object
    
            _rowsPerPage =
                isRowCountLessDefaultRowsPerPage ? tableItemsCount : defaultRowsPerPage;
            return Scaffold(
              appBar: AppBar(
                title: Text("Demo Paginated Table"),
              ),
              body: SingleChildScrollView(
                child: PaginatedDataTable(
                  header: Text('data with 7 rows per page'),
                  // comparing the actual data length with the PaginatedDataTable.defaultRowsPerPage and then assigning it to _rowPerPage1 variable which then set using the setsState()
                  onRowsPerPageChanged: isRowCountLessDefaultRowsPerPage // The source of problem!
                      ? null
                      : (rowCount) {
                          setState(() {
                            _rowsPerPage1 = rowCount;
                          });
                        },
                  columns: [
                    DataColumn(label: Text('row')),
                    DataColumn(label: Text('name')),
                  ],
                  source: dts,
                  //Set Value for rowsPerPage based on comparing the actual data length with the PaginatedDataTable.defaultRowsPerPage 
                  rowsPerPage:
                      isRowCountLessDefaultRowsPerPage ? _rowsPerPage : _rowsPerPage1,
                ),
              ),
            );
          }
        }
    
        class DTS extends DataTableSource {
          @override
          DataRow getRow(int index) {
            return DataRow.byIndex(
              index: index,
              cells: [
                DataCell(Text('row #$index')),
                DataCell(Text('name #$index')),
              ],
            );
          }
    
          @override
          int get rowCount => 9; // Manipulate this to which ever value you wish
    
          @override
          bool get isRowCountApproximate => false;
    
          @override
          int get selectedRowCount => 0;
        }
    

提交回复
热议问题