如何去除Flutter中DataTable的CheckBox图标?

Aug*_*sto 11 datatable dart flutter

我正在实现 aDataTable来显示一些数据,为此我正在使用 a PaginatedDataTable,这样我就可以加载并显示我的数据,问题是我的每行DataTable显示一个复选框,而我不想要它。

\n\n

这是我目前的结果:

\n\n

在此输入图像描述

\n\n

我想删除这些复选框,但我不知道该怎么做。

\n\n

代码:

\n\n
ExpensesDataSource _expensesDataSource = ExpensesDataSource([expense]);\n\n    Widget getDataTable() {\n      return PaginatedDataTable(\n        header: Text(\'Despesas\', style: TextStyle(color: Color(0xFF4C4C4C), fontWeight: FontWeight.bold, fontSize: 15),),\n        columns: <DataColumn>[\n          DataColumn(\n            label: Text("Data"),\n            numeric: false,\n          ),\n          DataColumn(\n            label: Text("Descri\xc3\xa7\xc3\xa3o"),\n            numeric: false,\n          ),\n          DataColumn(\n            label: Text("Total"),\n            numeric: false,\n          ),\n        ],\n        source: _expensesDataSource,\n      );\n  }\n\n\nclass ExpensesDataSource extends DataTableSource {\n\n  List<Expense> _expenses = <Expense>[];\n  int _selectedCount = 0;\n\n  ExpensesDataSource(List<Expense> listExpenses) {\n      this._expenses = listExpenses;\n  }\n\n  @override\n  DataRow getRow(int index) {\n    final Expense expense = _expenses[index];\n    return DataRow.byIndex(\n        index: index,\n        onSelectChanged: (bool value) {\n          print(\'Row selected: $value ${expense.name}\');\n        },\n        cells: [\n          DataCell(Text(expense.date)),\n          DataCell(Text(expense.name)),\n          DataCell(Text(Utils.convert2currency(expense.total_amount)))\n        ]\n    );\n  }\n\n  @override\n  // TODO: implement rowCount\n  int get rowCount => _expenses.length;\n\n  @override\n  bool get isRowCountApproximate => false;\n\n  @override\n  int get selectedRowCount => _selectedCount;\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Sha*_*hra 10

更新

现已在稳定频道上提供。

如果您位于主频道而不是稳定频道,则有可能。

您只需添加一个为DataTablefalse 的属性showCheckboxColumn

编辑后的完整代码将是

@override
Widget build(BuildContext context) {
return Scaffold(
    appBar: AppBar(
        title: Text(
          "Sample",
          style: TextStyle(color: Colors.white),
        ),
    body: Column(children: <Widget>[
      DataTable(
        showCheckboxColumn: false,
        sortAscending: true,
        columns: <DataColumn>[
          DataColumn(
            label: Text('Product name'),
          ),
          DataColumn(
            label: Text('Product Quantity'),
          ),
        ],
        rows: items
            .map(
              (itemRow) => DataRow(
                onSelectChanged: (bool selected) {
                  if (selected) {
                    //'row-selected: ${itemRow.index}'
                  }
                },
                cells: [
                  DataCell(
                    Text(itemRow.itemName),
                    showEditIcon: false,
                    placeholder: false,
                  ),
                  DataCell(
                    Text(itemRow.itemQuantity),
                    showEditIcon: true,
                    placeholder: false,
                    //onTap: _getSelectedRowInfo,
                  ),
                ],
              ),
            )
            .toList(),
      )
    ]),
    bottomNavigationBar: BottomNavigationBar(
      items: const <BottomNavigationBarItem>[
        BottomNavigationBarItem(
          icon: Icon(Icons.home),
          title: Text('Home'),
        ),
      ],
      currentIndex: _selectedIndex,
      selectedItemColor: Colors.amber[800],
      onTap: _onItemTapped,
    ));
  }
}
Run Code Online (Sandbox Code Playgroud)

一些 flutter 开发人员不建议更改为 master,但如果没有问题,您可以使用以下命令更改它: flutter channel master flutter upgrade


Gün*_*uer 0

目前只能通过省略onSelectionChange: ...或传递null 来代替

    onSelectChanged: (bool value) {
      print('Row selected: $value ${expense.name}');
    },
Run Code Online (Sandbox Code Playgroud)

https://docs.flutter.io/flutter/material/DataRow/onSelectChanged.html