datatable - 如何在 Flutter 中删除 DataTable 的 CheckBox 图标?
问题描述
我正在实现 aDataTable
来显示一些数据,为此我正在使用 a PaginatedDataTable
,所以我可以加载并显示我的数据,问题是我每行DataTable
显示一个CheckBox而我不想要它。
这是我目前的结果:
我想删除这些CheckBox但我不知道该怎么做。
代码:
ExpensesDataSource _expensesDataSource = ExpensesDataSource([expense]);
Widget getDataTable() {
return PaginatedDataTable(
header: Text('Despesas', style: TextStyle(color: Color(0xFF4C4C4C), fontWeight: FontWeight.bold, fontSize: 15),),
columns: <DataColumn>[
DataColumn(
label: Text("Data"),
numeric: false,
),
DataColumn(
label: Text("Descrição"),
numeric: false,
),
DataColumn(
label: Text("Total"),
numeric: false,
),
],
source: _expensesDataSource,
);
}
class ExpensesDataSource extends DataTableSource {
List<Expense> _expenses = <Expense>[];
int _selectedCount = 0;
ExpensesDataSource(List<Expense> listExpenses) {
this._expenses = listExpenses;
}
@override
DataRow getRow(int index) {
final Expense expense = _expenses[index];
return DataRow.byIndex(
index: index,
onSelectChanged: (bool value) {
print('Row selected: $value ${expense.name}');
},
cells: [
DataCell(Text(expense.date)),
DataCell(Text(expense.name)),
DataCell(Text(Utils.convert2currency(expense.total_amount)))
]
);
}
@override
// TODO: implement rowCount
int get rowCount => _expenses.length;
@override
bool get isRowCountApproximate => false;
@override
int get selectedRowCount => _selectedCount;
}
解决方案
更新
现在可在稳定频道上使用。
如果您在主频道而不是稳定频道,这是可能的。
您只需添加一个属性为DataTable
假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,
));
}
}
一些 Flutter 开发者不建议更改为 master,但如果您没有问题,您可以使用以下命令进行更改:
flutter channel master
flutter upgrade
推荐阅读
- javascript - 限制用户输入新名称,只允许从现有列表中选择
- vb.net - 为什么我必须取消 OpenFileDialog 两次才能关闭
- python-3.x - vsftpd 是否支持 mlsd 命令?
- javascript - 来自 javascript 的属性更新背后的代码
- three.js - 在 a 帧中的标记上缩放 3d 模型
- spring - Spring Security 5 OAuth 2.0 ResourceServer 如何与 AuthorizationServer 通信?
- android - Android - javax.imageio 不存在
- spring-data - 带有过程支持的 Spring @DataNeo4jTest
- .htaccess - htaccess 重定向空 uri 而不是目录列表
- java - How does the scope of local variables affect load/store performance on Java?