How to get selected row index of a dynamic datatable flutter

834

You need to write a for loop over snapshot.data.rowData list in order to get index to be used inside onSelectChanged. Something like this.

  List<DataRow> buildListOfDataRows(BuildContext context, WardsData wardsData){

    List<Ward> wards = wardsData.listOfWards;
    List<DataRow> dataRows = [];

    for(int i = 0; i < wards.length; i++) {

      String floorName = wards[i].floorName;
      int ot = wards[i].oxygenBedTotal;
      int oa = wards[i].oxygenBedAvailable;

      DataRow row = DataRow(
        cells: [
          DataCell(Text(floorName)),
          DataCell(Text('$ot')),
          DataCell(Text('$oa')),
        ],
        onSelectChanged: (_){
          showUpdatedByInfoPopUp(context, wards[i]);
        },
      );

      dataRows.add(row);
    }

    return dataRows;
  }

And use this function inside DataTable to build rows.

rows: buildListOfDataRows(context, wardsData)
Share:
834
Android_id
Author by

Android_id

Updated on December 24, 2022

Comments

  • Android_id
    Android_id 11 months

    I have a dynamic dataTable where the is data is dispalyed . Now i need click on the row and pass related data to a new class. This is what i have tried, how to i get the correct index of the clicked row.

        rows: snapshot.data.rowData.map<DataRow>((e) {
         return DataRow(
            cells: e.map<DataCell>((e) => DataCell(Text(e))).toList(),
            onSelectChanged: (bool selected) {
                if (selected) {
            Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => new ImageGridAndListViewScreen(
                            zoomData:snapshot.data.dataList[index].NextLevelData))//here unable to get the selected row index
                );
              }
     
            },
    
          );
        }).toList(),