Sorting 对颤振数据表中的列值进行排序
我在对数据表中的列进行排序时遇到了严重困难 这是我的密码Sorting 对颤振数据表中的列值进行排序,sorting,flutter,dart,datatable,Sorting,Flutter,Dart,Datatable,我在对数据表中的列进行排序时遇到了严重困难 这是我的密码 SingleChildScrollView( scrollDirection: Axis.horizontal, child: DataTable( sortColumnIndex: 0, sortAscending: true, columnSpacing: 5.0, horizontalMargin: 10, columns: [ DataColumn(label:
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列附近的一个箭头(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']));
}
}
}
希望有帮助 myList是地图列表?传递
sortColumnIndex
只影响标题行中的指示器箭头。数据行不会自动排序。您应该打开并拨打setState
然后谢谢。如何手动对数据进行排序?我的问题是我的列表不是来自一个类。它不是从类实例化的。也就是说,我不能调用myList.myElement等语法
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']));
}
}
}