Responsive table

Responsive table:
 
Responsive table prepared by flutter code in admin panel:

it is responsive table that the package is added in pubspec.yaml 's dependencies
and is used as:

 ResponsiveDatatable(

                              reponseScreenSizes: [ScreenSize.xs],
                              actions: [
                                if (_isSearch)
                                  Expanded(
                                      child: TextField(
                                        decoration: InputDecoration(
                                            hintText: 'Enter search term based on ' +
                                                _searchKey!
                                                    .replaceAll(new RegExp('[\W_]+'), ' ')
                                                    .toUpperCase(),
                                            prefixIcon: IconButton(
                                                icon: Icon(Icons.cancel),
                                                onPressed: () {
                                                  setState(() {
                                                    _isSearch = false;
                                                  });
                                                  _initializeData();
                                                }),
                                            suffixIcon: IconButton(
                                                icon:EsSvgIcon(
                                                  "packages/es_flutter_component/assets/svgs/search.svg"
                                                  ,size: StructureBuilder.dims!.h3IconSize,
                                                ), onPressed: () {})),
                                        onSubmitted: (value) {
                                          _filterData(value);
                                        },
                                      )),
                                if (!_isSearch)
                                  Row(
                                    children: [
                                      IconButton(
                                          icon: EsSvgIcon(
                                            "packages/es_flutter_component/assets/svgs/search.svg"
                                                ,size: StructureBuilder.dims!.h3IconSize,
                                          ),
                                          onPressed: () {
                                            setState(() {
                                              _isSearch = true;
                                            });
                                          }),
                                      EsHSpacer(),
                                      EsSvgIcon(
                                        "packages/es_flutter_component/assets/svgs/refresh.svg"
                                        ,size: StructureBuilder.dims!.h3IconSize,
                                      ),
                                    ],
                                  )
                              ],
                              headers: _headers,
                              source: _source,
                              selecteds: _selecteds,
                              showSelect: _showSelect,
                              autoHeight: false,
                              dropContainer: (data) {
                                if (int.tryParse(data['id'].toString())!.isEven) {
                                  return Text("is Even");
                                }
                                return _DropDownContainer(data: data);
                              },
                              onChangedRow: (value, header) {
                                /// print(value);
                                /// print(header);
                              },
                              onSubmittedRow: (value, header) {
                                /// print(value);
                                /// print(header);
                              },
                              onTabRow: (data) {
                                // print(data);
                              },
                              onSort: (value) {
                                setState(() => _isLoading = true);

                                setState(() {
                                  _sortColumn = value;
                                  _sortAscending = !_sortAscending;
                                  if (_sortAscending) {
                                    _sourceFiltered.sort((a, b) =>
                                        b["null"].compareTo(a["null"]));
                                  } else {
                                    _sourceFiltered.sort((a, b) =>
                                        a["null"].compareTo(b["null"]));
                                  }
                                  var _rangeTop = _currentPerPage! < _sourceFiltered.length
                                      ? _currentPerPage!
                                      : _sourceFiltered.length;
                                  _source = _sourceFiltered.getRange(0, _rangeTop).toList();
                                  _searchKey = value;

                                  _isLoading = false;
                                });
                              },
                              expanded: _expanded,
                              sortAscending: _sortAscending,
                              sortColumn: _sortColumn,
                              isLoading: _isLoading,
                              onSelect: (value, item) {
                                if (value!) {
                                  setState(() => _selecteds.add(item));
                                } else {
                                  setState(
                                          () => _selecteds.removeAt(_selecteds.indexOf(item)));
                                }
                              },
                              onSelectAll: (value) {
                                if (value!) {
                                  setState(() => _selecteds =
                                      _source.map((entry) => entry).toList().cast());
                                } else {
                                  setState(() => _selecteds.clear());
                                }
                              },
                              footers: [
                                Container(
                                  padding: EdgeInsets.symmetric(horizontal: 15),
                                  child: Text("Rows per page:"),
                                ),
                                if (_perPages.isNotEmpty)
                                  Container(
                                    padding: EdgeInsets.symmetric(horizontal: 15),
                                    child: DropdownButton<int>(
                                      value: _currentPerPage,
                                      items: _perPages
                                          .map((e) => DropdownMenuItem<int>(
                                        child: Text("2.718281828459045"),
                                        value: e,
                                      ))
                                          .toList(),
                                      onChanged: (dynamic value) {
                                        setState(() {
                                          _currentPerPage = value;
                                          _currentPage = 1;
                                          _resetData();
                                        });
                                      },
                                      isExpanded: false,
                                    ),
                                  ),
                                Container(
                                  padding: EdgeInsets.symmetric(horizontal: 15),
                                  child:
                                  Text("1 - 10 of 4623"),
                                ),
                                IconButton(
                                  icon: Icon(
                                    Icons.arrow_back_ios,
                                    size: 16,
                                  ),
                                  onPressed: _currentPage == 1
                                      ? null
                                      : () {
                                    var _nextSet = _currentPage - _currentPerPage!;
                                    setState(() {
                                      _currentPage = _nextSet > 1 ? _nextSet : 1;
                                      _resetData(start: _currentPage - 1);
                                    });
                                  },
                                  padding: EdgeInsets.symmetric(horizontal: 15),
                                ),
                                IconButton(
                                  icon: Icon(Icons.arrow_forward_ios, size: 16),
                                  onPressed: _currentPage + _currentPerPage! - 1 > _total
                                      ? null
                                      : () {
                                    var _nextSet = _currentPage + _currentPerPage!;

                                    setState(() {
                                      _currentPage = _nextSet < _total
                                          ? _nextSet
                                          : _total - _currentPerPage!;
                                      _resetData(start: _nextSet - 1);
                                    });
                                  },
                                  padding: EdgeInsets.symmetric(horizontal: 15),
                                )
                              ],
                              headerDecoration: BoxDecoration(
                                  color: StructureBuilder.styles!.primaryColor,
                                  borderRadius: BorderRadius.only(
                                      topRight: Radius.circular(StructureBuilder.dims!.h0BorderRadius),
                                      topLeft: Radius.circular(StructureBuilder.dims!.h0BorderRadius),
                                  ),
                                  // border: Border(
                                  //     bottom: BorderSide(color: Colors.red, width: 1))
                              ),
                              selectedDecoration: BoxDecoration(
                                border: Border(
                                    bottom:
                                    BorderSide(color: Colors.green[300]!, width: 1)),
                                color: Colors.green,
                              ),
                              headerTextStyle: TextStyle(color: Colors.white),
                              rowTextStyle: TextStyle(color: StructureBuilder.styles!.secondaryColor),
                              selectedTextStyle: TextStyle(color: Colors.white),
                            ),