Zai*_*SMJ 12 datatable dart flutter
我正在使用 Flutter DataTables 来显示购物车中的项目列表。现在我想编辑任何选定行的数量。有没有办法获取用户点击的行的信息?
以下是我的数据表的完整代码:
class _DataTableSampleState extends State<DataTableSample> {
void _getSelectedRowInfo() {
print('Selected Item Row Name Here...')
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('DataTable Sample'),
),
body: Container(
child: DataTable(
onSelectAll: (b) {},
sortAscending: true,
columns: <DataColumn>[
DataColumn(
label: Text('Item'),
),
DataColumn(
label: Text('Price'),
),
],
rows: items
.map(
(itemRow) => DataRow(
cells: [
DataCell(
Text(itemRow.itemName),
showEditIcon: false,
placeholder: false,
),
DataCell(
Text(itemRow.itemPrice),
showEditIcon: true,
placeholder: false,
onTap: _getSelectedRowInfo,
),
],
),
)
.toList(),
),
),
);
}
}
class ItemInfo {
String itemName;
String itemPrice;
ItemInfo({
this.itemName,
this.itemPrice,
});
}
var items = <ItemInfo>[
ItemInfo(
itemName: 'Item A',
itemPrice: '250',
),
ItemInfo(
itemName: 'Item B',
itemPrice: '100',
),
ItemInfo(
itemName: 'Item C',
itemPrice: '150',
),
];
Run Code Online (Sandbox Code Playgroud)
单击编辑图标时,将调用“_getSelectedRowInfo”方法。我想在此功能中获得选定/点击行的完整详细信息。
小智 16
您可以使用DataRow 中的onSelectChanged属性。
rows: items
.map(
(itemRow) => DataRow(
onSelectChanged: (bool selected) {
if (selected) {
log.add('row-selected: ${itemRow.index}');
}
},
cells: [
// ..
],
),
Run Code Online (Sandbox Code Playgroud)
Ram*_*him 11
尝试这个 :
DataTable(
showCheckboxColumn: false, // <-- this is important
columns: [
DataColumn(label: Text('FirstName')),
DataColumn(label: Text('LastName')),
],
rows:[
DataRow(
cells: [
DataCell(Text(obj['user1'])),
DataCell(Text(obj['name-a'])),
],
onSelectChanged: (newValue) {
print('row 1 pressed');
},
),
DataRow(
cells: [
DataCell(Text(obj['user2'])),
DataCell(Text(obj['name-b'])),
],
onSelectChanged: (newValue) {
print('row 2 pressed');
},
),
]
),
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。谢谢
小智 10
每个DataCell都有一个onTap回调。您可以使用此功能,而无需在表格行上显示不可隐藏的复选框。例如
DataCell(Text(itemrow.itemname),
onTap: () {
// Your code here
})
Run Code Online (Sandbox Code Playgroud)
这对我有用。如果您希望onTap对整个DataRow而不是仅对一个起作用DataCell,您可以将逻辑添加到onTap每个中DataCell并获得所需的结果。
| 归档时间: |
|
| 查看次数: |
23099 次 |
| 最近记录: |