我正在使用Ffltter 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',
  ),
];

单击编辑图标时,会调用"_getSelectedRowInfo"方法.我想在这个函数中获得选中/点击行的完整细节.

推荐答案

您可以使用DataRow中的onSelectChanged属性.

rows: items
    .map(
        (itemRow) => DataRow(
            onSelectChanged: (bool selected) {
                if (selected) {
                    log.add('row-selected: ${itemRow.index}');
                }
            },
            cells: [
                // ..
            ],
        ),

Dart相关问答推荐

Flutter 网页打开网址并获取数据

Dart 中的静态构造函数

停止从事件侦听器内部侦听事件

你如何在 Polymer 中调度和监听自定义事件?

dart 中 call() 的实现是什么?

Flutter - 在 null 上调用了 getter 'length'

为http POST请求从Flutter上的TextFormField捕获数据

不要将 PageView 居中 - Flutter

在 Dart 中将对象推入数组

如何在Flutter中返回异步函数的值?

谷歌dart Regions?

Firebase Crashlytics 崩溃未报告给 Flutter 中的 Firebase 控制台

如何在flatter中读取本地json导入?

在向下滚动时隐藏底部导航栏,反之亦然

将Dart嵌入到应用程序中

将DateTime转换为ISO 8601

如何在 Dart 中替换字符串中间的空格?

多次打印同一个字符而不循环

函数调用前的感叹号是什么意思?

如何判断一个对象是否是一个类的实例