PaginatedDataTable - DataTableSource не сортируется должным образом при изменении данных

Я пытаюсь создать paginatedDataTable, который можно фильтровать, однако, если данные фильтруются, сортировка не работает.

после добавления некоторых проверок печати он показывает, что данные уже отфильтрованы и отсортированы должным образом, однако notifyListeners() внутри DataTableSource, похоже, не обновляет представление. Однако он работает правильно, когда данные не фильтруются.

это функция сортировки внутри 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, который затем передается в DataSource:

      _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

0 ответов

Другие вопросы по тегам