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

Flutter 如何获取动态数据表的选定行索引,flutter,dart,datatable,Flutter,Dart,Datatable,我有一个动态数据表,其中显示的是数据。现在我需要单击该行并将相关数据传递给一个新类。这就是我所尝试的,如何获得单击行的正确索引 rows: snapshot.data.rowData.map<DataRow>((e) { return DataRow( cells: e.map<DataCell>((e) => DataCell(Text(e))).toList(), onSelectChanged: (bool s

我有一个动态数据表,其中显示的是数据。现在我需要单击该行并将相关数据传递给一个新类。这就是我所尝试的,如何获得单击行的正确索引

    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(),
rows:snapshot.data.rowData.map((e){
返回数据行(
单元格:e.map((e)=>DataCell(Text(e)).toList(),
onSelectChanged:(布尔选择){
如果(选定){
导航器。推(
上下文
材料路线(
生成器:(上下文)=>新建ImageGridAndListViewScreen(
zoomData:snapshot.data.dataList[index].NextLevelData))//此处无法获取所选行索引
);
}
},
);
}).toList(),

您需要在
snapshot.data.rowData
列表上为循环编写一个
以便在
onSelectChanged
中使用索引。像这样的

  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;
  }

您需要在
snapshot.data.rowData
列表上为循环
编写一个
,以便在
onSelectChanged
中使用索引。像这样的

  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;
  }