Flutter DataTable onTap 选择最后一个值

问题描述 投票:0回答:1

我是相对较新的 tro flutter。我正在尝试创建一个数据表,用户可以点击该数据表并根据单击的行采取一些操作。但是,当用户点击任何单元格时,无论点击哪个单元格或行,它都会选取最后一个值(表格左下角)。也试过

onSelectChanged

List<DataRow> dataRows = [];
    String cellValue = '';
    final formatter = NumberFormat('#,##0;(#,##0)');
    for (int z = 0; z < widget.data.length; z++) {
      dataRows.add(DataRow(
          cells: [],
          onSelectChanged: (selected) {
            if (selected!) {
              debugPrint('row-selected: $cellValue');
            }
          }));
      int ii = 0;
      for (int i = 0; i < noOfColumns; i++) {
        ii = i + 1;
        if (columnTypes[i] == 'N') {
          cellValue = formatter.format(double.parse(widget.data[z]['col$ii']));
        } else {
          cellValue = widget.data[z]['col$ii'].toString();
        }
        dataRows[z].cells.add(
              DataCell(
                Text('--$cellValue'),
                onTap: () => {
                  debugPrint(
                      "onTap Pressed ====>$cellValue-------${TimeOfDay.now()}")
                },
              ),
            );
      }
    }
flutter datatable ontap
1个回答
0
投票

您编码的方式使其采用最后的

cellValue
,因为它是在外部作用域中声明的。尝试在局部作用域中引入局部变量,而不是通过替换

    dataRows[z].cells.add(
          DataCell(
            Text('--$cellValue'),
            onTap: () => {
              debugPrint(
                  "onTap Pressed ====>$cellValue-------${TimeOfDay.now()}")
            },
          ),
        );

    String someString = cellValue;
    dataRows[z].cells.add(
          DataCell(
            Text('--$cellValue'),
            onTap: () => {
              debugPrint(
                  "onTap Pressed ====>$someString -------${TimeOfDay.now()}")
            },
          ),
        );
© www.soinside.com 2019 - 2024. All rights reserved.