gpt4 book ai didi

Flutter DataTable 中的列值排序

转载 作者:行者123 更新时间:2023-12-04 00:57:08 26 4
gpt4 key购买 nike

我在对 DataTable 中的列进行排序时遇到了严重的困难。

这是我的代码

  SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: DataTable(
sortColumnIndex: 0,
sortAscending: true,

columnSpacing: 5.0,
horizontalMargin: 10,
columns: [
DataColumn(label: Text('Col1'),
DataColumn(label: Text('Col2'),numeric: false ),
DataColumn(label: Text('Col3'),numeric: true ),
DataColumn(label: Text('Col4'), numeric: true),
DataColumn(label: Text('Col5'), numeric: true),
],
rows: myList
.map(
((element) => DataRow(
cells: <DataCell>[
DataCell(Text(element["Col1"]), placeholder: true,showEditIcon: false),
DataCell(Text(element["Col2"].toString())),
DataCell(Text(element["Col3"].toString())),
DataCell(Text(element["Col4"].toString())),
DataCell(Text(element["Col5"].toString())),
],
)),
).toList(),
),
));

我还要做什么?理想情况下,我希望在用户按下的任何列上都有排序功能,但现在,我很高兴只有 1 列可以排序。

如您所见,我添加了约束:
    sortColumnIndex: 0,
sortAscending: true,

但是我得到的只是第一列附近的箭头(ColumnIndex = 0)——当你按下它时它真的什么都不做。

我究竟做错了什么?

最佳答案

您必须在要排序的列中添加一个 'onSort: ,' 并调用排序函数。

bool sort;

DataTable(
sortAscending: sort,
sortColumnIndex: 0,
columns: [
DataColumn(
label: Text("Col1"),
onSort: (columnIndex, ascending) {
setState(() {
sort = !sort;
});
onSortColum(columnIndex, ascending);
}),
...

和 onSortColum 函数:
onSortColum(int columnIndex, bool ascending) {
if (columnIndex == 0) {
if (ascending) {
yourDataList.sort((a, b) => a['name'].compareTo(b['name']));
} else {
yourDataList.sort((a, b) => b['name'].compareTo(a['name']));
}
}
}

希望有帮助!

关于Flutter DataTable 中的列值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61563024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com