我是相对较新的 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()}")
},
),
);
}
}
您编码的方式使其采用最后的
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()}")
},
),
);