简体   繁体   English

如何获取动态数据表 flutter 的选定行索引

[英]How to get selected row index of a dynamic datatable flutter

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.现在我需要单击该行并将相关数据传递给新的 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(),

You need to write a for loop over snapshot.data.rowData list in order to get index to be used inside onSelectChanged .您需要在snapshot.data.rowData列表上编写一个for loop ,以获取要在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.并在DataTable中使用这个 function 来构建行。

rows: buildListOfDataRows(context, wardsData)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM