微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter PaginatedDataTable - 数据更改时 DataTableSource 未正确排序

如何解决Flutter PaginatedDataTable - 数据更改时 DataTableSource 未正确排序

我正在尝试创建一个可以过滤的分页数据表,但是如果数据被过滤,排序将不起作用。

添加一些打印检查后,它显示数据已经被正确过滤和排序,但是 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 举报,一经查实,本站将立刻删除。