Flutter DataTable - 点击整行

Rai*_*ado 5 datatable dart flutter

我是 Flutter 新手。我需要有关 DataCell 中 OnTap 的帮助。例如,我想要的是行,而不是点击一个单元格。

这是我的代码

DataTable(
     columns: <DataColumn>[
        DataColumn(
          label: Text("Title"),
          ),
        DataColumn(
          label: Text("Contacts"),
          ),
         )
        ],
         rows: contracts.map((contract) => DataRow(
             cells: [
               DataCell(Text(contract.title),
                  onTap: () {
                      Navigator.push(context, MaterialPageRoute(
                              builder: (context) => List(),),
                           );
                         }),
               DataCell(Text(contract.contacts),
                  onTap: () {
                      Navigator.push(context, MaterialPageRoute(
                              builder: (context) => List(),),
                           );
                         }),).toList()
Run Code Online (Sandbox Code Playgroud)

我想单击特定行,它将路由到另一个页面并发送它的索引值。

Tom*_*van 7

遇到了同样的问题,意识到您可以onSelectChanged使用DataRow.

示例来自DataTable

rows: searchList.map((item) {
        return DataRow(
          onSelectChanged: (bool value) {
             // ENTER CALLBACK HERE (It's not restricted to use the bool)
          },
          cells: ...
Run Code Online (Sandbox Code Playgroud)

请注意,这将使Checkbox可见,如果您不需要这样做,请确保在以下内容中强制showCheckboxColumn使用:falseDataTable

    return DataTable(
      showCheckboxColumn: false,
      columns: [...]
Run Code Online (Sandbox Code Playgroud)


Vic*_*khe 0

使整个小部件可点击

只需用 InkWell()GestureDetectorWidget包裹您的小部件

InkWell()当您按下小部件时,小部件将添加可点击的阴影效果

GestureDetector()小部件不会

在你的情况下,不用包装,DataCell只需包装你的DataRow小部件

  • 这不起作用,因为“DataTable”的属性“rows”需要一个“List&lt;DataRow&gt;”,因此您无法为其分配“List&lt;GestureDetector&gt;”。 (2认同)