问题描述
我正在尝试创建一个可以过滤的分页数据表,但是如果数据被过滤,排序将不起作用。
添加一些打印检查后,它显示数据已经被正确过滤和排序,但是 DataTableSource 中的 notifyListeners() 似乎没有更新视图。但是,当数据没有被过滤时,它可以正常工作。
这是 DataTableSource 中的排序函数:
void _sort<T>(Comparable<T> getField(Item item),bool ascending) {
print("sort data ${ascending ? "ascending" : "descending"}");
print("item list size: ${_itemList.length}");
_itemList.sort((Item a,Item b) {
final aValue = getField(a);
final bValue = getField(b);
return ascending ? Comparable.compare(aValue,bValue) : Comparable.compare(bValue,aValue);
});
notifyListeners();
}
这是数据的过滤方式:
_itemData = _provider.item.where((element) => element.code.toLowerCase().contains(filterText.toLowerCase())).toList();
_provider 是使用 ChangeNotifier 跟踪数据更改的数据提供者 然后传递给数据源:
_itemDataSource = ItemDataSource(item: _itemData,context: context);
...
source: _itemDataSource,
输出:
Flutter: sort data descending
Flutter: item list size: 1186
Flutter: sort data ascending
Flutter: item list size: 1186
Flutter: sort data descending
Flutter: item list size: 24
Flutter: sort data ascending
Flutter: item list size: 24
非常感谢任何建议或帮助
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)